変数が利用できないのはなぜですか?

変数が利用できないのはなぜですか?

背景

応募したいこれ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そこにも変数は存在しません。

見るここ詳細については。

関連情報