Fondo
Me gustaria optaresteidea de tener una common
clase que incluya toda la información específica sobre mi configuración.
Así que he creado /etc/puppet/modules/common/manifests/init.pp
con
class common { include common::data }
class common::data { $ntpServerList = [ 'ntp51.ex.com','ntp3.ex.com' ] }
e instaladoestemódulo ntp y he creado un nodo como este
node testip {
include myconfig::ntpp
}
Problema
/etc/puppet/modules/myconfig/manifests/init.pp
contiene
class myconfig::ntpp {
include common
class {'ntp':
server_list => $ntpServerList
# server_list => ['ntp.ex.com'] # this works
}
}
Y hubiera esperado que $ntpServerList
estuviera disponible, pero no lo está. El error es
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template ntp/ntp.conf.erb:
Filepath: /usr/lib/ruby/site_ruby/1.8/puppet/parser/templatewrapper.rb
Line: 64
Detail: Could not find value for 'server_list' at /etc/puppet/modules/ntp/templates/ntp.conf.erb:25
at /etc/puppet/modules/ntp/manifests/init.pp:183 on node testip
Pregunta
¿Alguien puede descubrir qué le pasa a mi myconfig::ntpp
clase?
Respuesta1
Necesita calificar completamente sus variables; $common::data::ntpServerList
.
Tal como están las cosas, su código busca una variable llamada ntpServerList
en el ámbito local ( $myconfig::ntpp::ntpServerList
) que no existe, por lo que vuelve al ámbito superior ( $::ntpServerList
) donde tampoco existe.
Veraquípara más detalles.