为什么变量不可用?

为什么变量不可用?

背景

我想要申请我想建立一个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),但该变量也不存在。

这里更多细节。

相关内容