web-dev-qa-db-ja.com

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

背景

私は適用したいと思います this 私のセットアップに関するすべての特定の情報を含むcommonクラスを持つという考え。

だから私は/etc/puppet/modules/common/manifests/init.ppを作成しました

class common { include common::data }
class common::data { $ntpServerList = [ 'ntp51.ex.com','ntp3.ex.com' ] }

そしてインストールされた this 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クラスの何が問題になっているのか理解できますか?

2
Sandra

変数を完全に修飾する必要があります。 $common::data::ntpServerList

現状では、コードはローカルスコープでntpServerListという変数を探しています($myconfig::ntpp::ntpServerList)存在しないため、トップスコープにフォールバックします($::ntpServerList)それも存在しない場合。

詳細については、 ここ を参照してください。

4
Patrick