Hintergrund
ich möchte mich bewerbenDasIdee, einen Kurs zu haben common
, der alle spezifischen Informationen zu meinem Setup enthält.
So habe ich erstellt /etc/puppet/modules/common/manifests/init.pp
mit
class common { include common::data }
class common::data { $ntpServerList = [ 'ntp51.ex.com','ntp3.ex.com' ] }
und installiertDasntp-Modul und habe einen Knoten wie folgt erstellt
node testip {
include myconfig::ntpp
}
Problem
/etc/puppet/modules/myconfig/manifests/init.pp
enthält
class myconfig::ntpp {
include common
class {'ntp':
server_list => $ntpServerList
# server_list => ['ntp.ex.com'] # this works
}
}
und ich hätte erwartet, dass das $ntpServerList
verfügbar wäre, aber es ist nicht verfügbar. Der Fehler ist
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
Frage
Kann irgendjemand herausfinden, was mit meiner myconfig::ntpp
Klasse nicht stimmt?
Antwort1
Sie müssen Ihre Variablen vollständig qualifizieren; $common::data::ntpServerList
.
So wie die Dinge liegen, sucht Ihr Code nach einer Variable, die ntpServerList
im lokalen Bereich ( $myconfig::ntpp::ntpServerList
) aufgerufen wird, aber nicht existiert. Deshalb greift er auf den obersten Bereich ( $::ntpServerList
) zurück, wo sie ebenfalls nicht existiert.
SehenHierfür mehr Details.