背景
我想要申請這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
也不存在的頂部作用域 ( )。
看這裡更多細節。