변수를 사용할 수 없는 이유는 무엇입니까?

변수를 사용할 수 없는 이유는 무엇입니까?

배경

신청하고 싶습니다이것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

보다여기상세 사항은.

관련 정보