我继承了一个使用Puppet,Vagrant和VirtualBox配置本地Centos测试机的python应用程序。
此应用程序是在Mac上编写的,我正在Windows上开发。
当我运行vagrant up
时,我看到了command line errors的大量列表,其中最相关的是:
Running Puppet with site.pp..
Warning: Config file /home/vagrant/hiera.yaml not found, using Hiera defaults
WARN: Fri Apr 25 16:32:24 +0100 2014: Not using Hiera::Puppet_logger. It does not report itself to b
e suitable.
我知道Hiera是什么,为什么它很重要,但我不知道如何解决这个问题。
文件hiera.yaml存在于仓库中,但在 home / vagrant / hiera.yaml 中找不到,而是在 ./ puppet / manifests / hiera.yaml < / em> ....同样地,如果我进入框中, home / vagrant 中绝对没有任何内容,但是当我查看/ tmp时我可以找到这个文件
所以我很困惑,是不是看着虚拟框内的流浪汉并希望在 home / vagrant / hiera.yaml 找到这个文件?或者我是否继承了首先无法正常工作的应用程序?我真的被困在这里,我无法与原来的开发者取得联系。
以下是我的Vagrantfile中的一些细节:
Vagrant.configure("2") do |config|
# Base box configuration ommitted
# Forwarded ports ommitted
# Statically set hostname and internal network to match puppet env ommitted
# Enable provisioning with Puppet standalone
config.vm.provision :puppet do |puppet|
# Tell Puppet where to find the hiera config
puppet.options = "--hiera_config hiera.yaml --manifestdir /tmp/vagrant-puppet/manifests"
# Boilerplate Vagrant/Puppet configuration
puppet.module_path = "puppet/modules"
puppet.manifests_path = "puppet/manifests"
puppet.manifest_file = "site.pp"
# Custom facts provided to Puppet
puppet.facter = {
# Tells Puppet that we're running in Vagrant
"is_vagrant" => true,
}
end
# Make the client accessible
config.vm.synced_folder "marflar_client/", "/opt/marflar_client"
end
真的很奇怪。
答案 0 :(得分:2)
这条puppet.options
行告诉Puppet在哪里查找hiera.yaml,目前只是指定文件名。现在,当您运行vagrant up
时,它会将当前目录(其中包含Vagrantfile
的目录)安装到来宾计算机上的/vagrant
中。由于您hiera.yaml
实际上找到了./puppet/manifests/hiera.yaml
,我相信您想要更改puppet.options
行,如下所示:
puppet.options = "--hiera_config /vagrant/puppet/manifests/hiera.yaml --manifestdir /tmp/vagrant-puppet/manifests"
答案 1 :(得分:0)
要解决此警告,您可以先尝试检查此文件的引用位置,即:
$ grep -Rn hiera.yaml /etc/puppet
/etc/puppet/modules/stdlib/spec/spec_helper_acceptance.rb:13: on hosts, '/bin/touch /etc/puppet/hiera.yaml'
/etc/puppet/modules/mysql/spec/spec_helper_acceptance.rb:34: shell("/bin/touch #{default['puppetpath']}/hiera.yaml")
在这种情况下,它是你的流浪文件。
您也可以尝试通过以下方式找到正确的路径:
sudo updatedb && locate hiera.yaml
按照@EvgenyChernyavskiy的建议,如果找到该文件,请创建一个符号链接:
sudo ln -vs /etc/hiera.yaml /etc/puppet/hiera.yaml
或创建空文件(touch /etc/puppet/hiera.yaml
)。
在您的情况下,您应该使用hiera.yaml文件的绝对路径,而不是相对路径。
警告应该消失。