1

Puppet、Vagrant、および VirtualBox を使用してローカルの Centos テスト マシンをプロビジョニングする Python アプリを継承しました。

このアプリは Mac で作成され、Windows で開発しています。

実行すると、コマンド ライン エラーvagrant upの大きなリストが表示されます。最も関連性の高いエラーは次のとおりです。

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は見つかりません。 home/ vagrant 内にはまったく何もありませんが、/tmp を見るとこのファイルを見つけることができます

vagrantは仮想ボックスの中を見て、このファイルが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

それは本当に奇妙です。

4

2 に答える 2

2

puppet.optionsPuppet に 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"
于 2014-04-26T19:10:20.973 に答える
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")

この場合、それは vagrant ファイルです。

次の方法で正しいパスを見つけることもできます。

sudo updatedb && locate hiera.yaml

そして、@EvgenyChernyavskiy の提案に従い、ファイルが見つかった場合はシンボリック リンクを作成します。

sudo ln -vs /etc/hiera.yaml /etc/puppet/hiera.yaml

または空のファイルを作成します ( touch /etc/puppet/hiera.yaml)。

あなたの場合、相対パスではなく、hiera.yaml ファイルへの絶対パスを使用する必要があります。

警告は消えているはずです。

于 2014-10-02T12:37:21.957 に答える