私は設定方法を知りたい: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で使用するためのものです(実稼働中)。