背景
応募したいこれcommon
私のセットアップに関するすべての具体的な情報を含むクラスを作成するというアイデア。
/etc/puppet/modules/common/manifests/init.pp
だから私は
class common { include common::data }
class common::data { $ntpServerList = [ 'ntp51.ex.com','ntp3.ex.com' ] }
インストールこれntpモジュールと次のようなノードを作成しました
node testip {
include myconfig::ntpp
}
問題
/etc/puppet/modules/myconfig/manifests/init.pp
含む
class myconfig::ntpp {
include common
class {'ntp':
server_list => $ntpServerList
# server_list => ['ntp.ex.com'] # this works
}
}
そして、それが利用可能だと期待していたのです$ntpServerList
が、そうではありませんでした。エラーは
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
質問
myconfig::ntpp
私のクラスの何が問題なのか分かる人はいますか?
答え1
変数を完全に修飾する必要があります$common::data::ntpServerList
。
現状では、コードは存在しないntpServerList
ローカル スコープ ( $myconfig::ntpp::ntpServerList
) で呼び出された変数を探しているため、トップ スコープ ( ) にフォールバックしますが、$::ntpServerList
そこにも変数は存在しません。
見るここ詳細については。