為什麼變數不可用?

為什麼變數不可用?

背景

我想要申請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也不存在的頂部作用域 ( )。

這裡更多細節。

相關內容