Linux
為什麼變數不可用?
背景
我想應用這個想法,即擁有一個
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
課有什麼問題?
您需要完全限定您的變數;
$common::data::ntpServerList
.實際上,您的程式碼正在尋找
ntpServerList
在本地範圍 ($myconfig::ntpp::ntpServerList
) 中呼叫的不存在的變數,因此它回退到也不存在的頂級範圍 ($::ntpServerList
) 中。有關更多詳細資訊,請參見此處。