私は設定方法を知りたい:datadir:でhiera.yaml人形ベイグラントとの最適な使用のため。現在、puppet 3.1.1を実行しているUbuntu 12.04ゲストで、Ubuntu 13.10上のvirtualbox 4.2とともにvagrant 1.5.0を使用しています
このブログ投稿「Puppetのベストプラクティス:環境固有の構成」に似た環境をセットアップしようとしています。具体的には、私のVagrantfileには以下が含まれます。
  config.vm.define "servername" do |servername|
    servername.vm.box = "precise-puppet-3"
    servername.vm.network "private_network", ip: "192.168.213.2",
      virtualbox__intnet: "networkname"
    # Provision with puppet.
    servername.vm.provision :puppet do |puppet|
      puppet.hiera_config_path = "puppet/hiera.yaml"
      puppet.manifests_path = "puppet/manifests"
      puppet.module_path = "puppet/modules"
      puppet.manifest_file  = "servername.pp"
      puppet.facter = {
        "vagrant" => "1",
        "server" => "servername",
      }
    end
  end
hiera_config_path削除するとエラーが発生するため、これが正しいことを確認できますhiera.yaml。
puppet/hiera.yaml 含む:
---
:backends: yaml
:yaml:
  :datadir: "manifests/configuration"
:hierarchy:
  - "%{::clientcert}"
  - "%{::environment}"
  - "virtual_%{::is_virtual}"
  - common
:logger: console
さらに、次のものpuppet/manifests/configuration/common.yamlが含まれます。
---
myvar: "test"
コマンドラインからこれをテストする:
$ hiera -c hiera.yaml myvar
test
ここまでは順調ですね。しかし、puppetマニフェストファイル内からこれをテストしようとすると、変数が見つからず、エラーが発生します。テストの例:
$myvariable = hiera(myvar)
notice("My variable is: ${myvar}")
エラーは:
Error: Could not find data item myvar in any Hiera data file and no default supplied at...
を介してマシンにsshするとvagrant ssh、Vagrantがマニフェストディレクトリを/ tmp / vagrant-puppet-2にマウントしていることがわかります。hiera.yamlファイルを編集して:datadir:フルパスに置き換えると/tmp/vagrant-puppet-2/manifests/configuration、PuppetマニフェストがHieraデータにアクセスできるようになります。相対パスでこれを行うことはできますか?
hiera.yaml、2つのファイルが必要であることを意味します。1つはvagrantで使用するためのもので、もう1つはPuppetで使用するためのものです(実稼働中)。