I was going through the Puppet Learning doc.
Got to the template section and the ERB file, which is using the 'each'
method to print the $real_servers.
The puppet run fails with pointing to the 'each' method.
Is this a bug? does anyone have any pointers?
Using:
centos 6.6
puppet 3.8.1
ruby 1.8.7
Thanks.
# cat /etc/puppet/modules/ntp/manifests/init.p
class ntp {
# Choose platform, package name, and config file name
case $operatingsystem {
centos, redhat: {
$service_name = 'ntpd'
$conf_file = 'ntp.conf'
$default_servers = [ "0.centos.pool.ntp.org",
"1.centos.pool.ntp.org",
"2.centos.pool.ntp.org", ]
}
debian, ubuntu: {
$service_name = 'ntp'
$conf_file = 'ntp.conf.debian'
$default_servers = [ "0.debian.pool.ntp.org iburst",
"1.debian.pool.ntp.org iburst",
"2.debian.pool.ntp.org iburst",
"3.debian.pool.ntp.org iburst", ]
}
default: { fail("Unrecognized operating system for webserver") }
}
$servers_real = $default_servers
# Install the package
package { 'ntp':
ensure => installed,
}
# Get the config file
file { 'ntp.conf':
path => '/etc/ntp.conf',
ensure => file,
require => Package['ntp'],
content => template("ntp/${conf_file}.erb"),
}
# Manage the service
service { 'ntp':
name => $service_name,
ensure => running,
enable => true,
subscribe => File['ntp.conf'],
}
} #class
# cat /etc/puppet/modules/ntp/templates/ntp.conf.erb
<% @servers_real.each do |this_server| -%>
server <%= this_server %>
<% end -%>
# puppet agent --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
Failed to parse template ntp/ntp.conf.erb:
Filepath: /etc/puppet/modules/ntp/templates/ntp.conf.erb
Line: 2
Detail: undefined method `each' for nil:NilClass
at /etc/puppet/modules/ntp/manifests/init.pp:26 on node
puppetmaster.example.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/5d089681-9deb-4806-a3b1-4dbaa5bbe1d6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.