ソースリポジトリのHieraデータをどのように使用しますか?

ソースリポジトリのHieraデータをどのように使用しますか?

$::osfamilyマスターのないPuppet設定があり、移植性に基づいてパッケージ名などのいくつかの情報を簡単に追加したいと思います。ヒエラがこんなものに合うようにデザインされているようですが、実際にどうするのかわかりません。同じソースストア内のPuppetマニフェストでソースストアのHieraデータを使用する修正しないでください何もない存在する/etc。デフォルトでは、すべての文書は、他のリポジトリを使用するたびに手動で変更または/etc/puppetlabs/code/hiera.yaml変更したいと仮定しているようです。/etc/puppetlabs/puppet/puppet.confそれとも私がSheilaを完全に誤解しているのでしょうか?

必要に応じてpuppet.confをリポジトリに追加して実行するたびに参照できますが、どのように参照できますかpuppet apply現在のディレクトリルートhiera_config

ベストアンサー1

はい、所有されていない設定でHieraデータを使用できます。 hiera 設定で --hiera_config を指定すると、hiera データを探す場所を指定できます。

例:

nkts@trololo:/tmp/puppet$ puppet apply -t --modulepath=./modules/ --hiera_config=./hiera.conf manifests/a.pp
Notice: Compiled catalog for trololo.lan in environment production in 0.31 seconds
Info: Applying configuration version '1449108414'
Notice: test: bar
Notice: /Stage[main]/A/Notify[test: bar]/message: defined 'message' as 'test: bar'
Notice: Applied catalog in 0.02 seconds
nkts@trololo:/tmp/puppet$ cat hiera.conf
---
:backends: yaml
:yaml:
  :datadir: /tmp/puppet/data
:hierarchy: common
:logger: console
nkts@trololo:/tmp/puppet$ cat data/common.yaml
a::foo: bar
nkts@trololo:/tmp/puppet$ cat manifests/a.pp
class { "a":
}
nkts@trololo:/tmp/puppet$ cat modules/a/manifests/init.pp
class a (
  $foo = "default msg"
){
  notify { "test: $foo":
  }
}
nkts@trololo:/tmp/puppet$ rm data/common.yaml
nkts@trololo:/tmp/puppet$ puppet apply -t --modulepath=./modules/ --hiera_config=./hiera.conf manifests/a.pp
Notice: Compiled catalog for trololo.lan in environment production in 0.32 seconds
Info: Applying configuration version '1449108454'
Notice: test: default msg
Notice: /Stage[main]/A/Notify[test: default msg]/message: defined 'message' as 'test: default msg'
Notice: Applied catalog in 0.02 seconds
nkts@trololo:/tmp/puppet$

おすすめ記事