我希望 puppet 在 /etc 中查找 hiera.yaml,但它正在 /etc/puppet 中查找它。我在 puppet.conf 中加入了一行:
hiera_config = /etc/hiera.yaml
但是当我运行脚本时仍然给我 hiera.yaml 更新警告。
我正在从 Vagrant 1.2.2 运行脚本。使用人偶 3.2.2
我在虚拟机中运行 Centos 6.4。
我发现 vagrant 中的 puppet 供应商现在支持hiera_config_path
它完全符合我们的要求。
config.vm.provision :puppet do |puppet|
# path on host machine to hiera.yaml
puppet.hiera_config_path = '/Users/me/vms/hiera/hiera.yaml'
# This sets the relative path for hiera data directories
puppet.working_directory = '/Users/me/vms/hiera'
end
这在Vagrant: Up and Running中有记录,但直到我开始研究 vagrant 源代码以自己实现此功能时才找到它。
嗯...在 Vagrant 1.2.2 和 Puppet 3.2.3 上,我可以在 puppet.conf 中设置 hiera_config 没有问题。我会仔细检查您是在 Vagrant vm 上而不是在主机上编辑 /etc/puppet.conf,并且 hiera_config 行是 [main] 块,而不仅仅是在 [master] 块中。
如果这两个条件都为真并且仍然无法正常工作,您可以尝试在 Vagrantfile 中显式设置 hiera_config:
config.vm.provision :puppet do |puppet|
...
puppet.options = '--hiera_config=/etc/hiera.yaml'
end
祝你好运!
Puppet 配置以root用户身份运行,而不是vagrant,所以这就是它不会注意到 /vagrant 中的 puppet.conf 的原因。
如果您puppet config print
从用户 vagrant 和 root 在 vm 中运行,您会看到每个用户的所有 puppet 配置设置并进行比较。