我刚刚在 32 位 Ubuntu 12.04“服务器”虚拟机上安装了 puppet 3 (3.0.0-0.1rc3puppetlabs1)。我使用了软件包进行安装。
然后,我从生产 2.7.x puppet master 以及 hiera.yaml 和 hieradata/* 复制了现有的模块和清单。
当我运行时,puppet agent --test
我得到以下信息:
Error: Puppet::Parser::AST::Resource failed with error NoMethodError: undefined method `empty_answer' for Hiera::Backend:Module at /etc/puppet/environments/test/manifests/nodes/puppet_nodes.pp:47 on node ll-puppet-master-vm
有问题的行是:
class { 'basenode':
is_puppet_master => true;
}
基节点是:
class basenode (
$is_puppet_master = false,
$apt_host = 'repo.domain.com'
) {
...
}
对于模块,hiera 没有明确使用。
还,
root@ll-puppet-master-vm:/usr/lib/ruby/1.8/puppet/parser/functions# ls hiera*
hiera_array.rb hiera_hash.rb hiera_include.rb hiera.rb
我缺少依赖项或配置文件,但目前我还不知道是什么。
我的 hiera.yaml 是:
---
:hierarchy:
# - %{node_id}
- common
:backends:
- yaml
- puppet
:yaml:
:datadir: '/etc/puppet/hieradata'
我的puppet.conf:
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
report=true
server=ll-puppet-master-vm
certname=ll-puppet-master-vm
pluginsync=true
archive_files = true
listen=true
[agent]
environment=test
[master]
facts_terminus = yaml
environment=test
manifest=/etc/puppet/environments/test/manifests/site.pp
modulepath=/etc/puppet/environments/test/modules:/etc/puppet/modules
ssl_client_header=SSL_CLIENT_S_DN
ssl_client_verify_header=SSL_CLIENT_VERIFY
storeconfig=true
dbadapter=mysql
dbuser = XXXXX
dbpassword = XXXXX
dbconnections = 75
reports = store
答案1
事实证明,这实际上是由漏洞在某些版本中。
必须将 hiera_puppet.rb 复制到 hiera-puppet/lib 目录或等待新的 RC 发布,或者降级到较旧的、不受影响的 RC 之一。