Hi,
I'm wondering in which order puppet qualifies variables when using default
values at the same time.
I'm trying to set this up for a general ntp-class serving ntp.conf for
server and client-mode. There is a general params-subclass which defines my
defaults. One of the variables depends on a variable defined in the same
class (ntp::params::ntp_server depends on ntp::params::ntp_mode). These
values are then used to compile ntp.conf.
All is fine, as long as I do not want to override the variable. I see
correct servers and options ('broadcast') used in the generated ntp.conf.
But when I try to reset the variable 'ntp_server' from outside the class
(i.e. class becomes included in a node definition) only the template uses
my overwritten value, but not my conditional placed inside 'ntp::params'.
## /etc/ntp.conf: Without override (ntp_mode = server)
...
server ptbtime1.ptb.de
server ptbtime2.ptb.de
server ptbtime3.ptb.de
server 1.debian.pool.ntp.org
broadcast 10.254.1.255
...
## /etc/ntp.conf: With override (ntp_mode = client)
server ptbtime1.ptb.de <-- servers should only show ntp1, ntp2
server ptbtime2.ptb.de
server ptbtime3.ptb.de
server 1.debian.pool.ntp.org
<-- broadcast is missing, template knows about
overwritten variable
...
My manifests/templates look like this:
## manifests/site.pp
include modules.pp
include nodes.pp
...
## manifests/modules.pp
import 'ntp'
...
## manifests/nodes.pp
node /^(mgmt).*/ {
class { 'ntp' :
ntp_mode => 'client',
}
...
}
## modules/ntp/manifests/params.pp
class ntp::params {
...
$config_content = $::os ? {
default => 'ntp/ntp.conf.default.erb'
}
$ntp_mode = $::hostname ? {
/^(mgmt).*/ => 'server',
default => 'client',
}
$ntp_server = $ntp_mode ? {
server =>
['ptbtime1.ptb.de','ptbtime2.ptb.de','ptbtime3.ptb.de','1.debian.pool.ntp.org'],
client => ['ntp1','ntp2'],
default => undef,
}
$ntp_broadcast = $::broadcast
}
## modules/ntp/manifests/init.pp
class ntp (
$ntp_mode = $::ntp::params::ntp_mode,
$ntp_server = $::ntp::params::ntp_server,
$ntp_broadcast = $::ntp::params::ntp_broadcast,
) inherits ntp::params {
...
file { $config_name :
ensure => file,
path => $config_name,
owner => $config_owner,
group => $config_group,
mode => $config_mode,
content => template($config_content),
}
...
## modules/ntp/templates/ntp.conf.default.erb
...
<%- ntp_server.each do |host| -%>
server <%= host %>
<% end -%>
<%- if ntp_mode.to_s == 'server' then %>
broadcast <%= ntp_broadcast %>
<%- end %>
...
So, I'd like to know is there any way to let puppet re-evaluate
ntp_server-assignment in ntp::params? Is that qualification intended or may
I hit a bug here?
Thanks in advance
Mathias
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/puppet-users/-/Adp7TCkctpgJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.