web-dev-qa-db-ja.com

階層の他の場所からhiera変数を参照するにはどうすればよいですか?

したがって、非常に具体的なhiera YAMLファイルで、「env_name」などの変数を定義するとします。

env_name: "dev-unstable"

次に、より一般的なhieraファイルで、その変数を文字列に補間します。

server_name: "service-%{env_name}。%{:: domain}"

私のテストは、階層の他の場所からのhiera変数が一般的なケースで補間に利用できないことを意味するようです。残念ながら本当ですか?

6
Mojo

Hiera内でHieraルックアップ関数を使用できます。ここにドキュメント: https://docs.puppetlabs.com/hiera/1/variables.html#using-lookup-functions

あなたのケースではあなたが使うでしょう:

server_name: "service-%{hiera('env_name')}.%{::domain}"

これは優先ルックアップであり、キーが見つかった最も高い(最も具体的な)階層レベルからキーenv_nameの値を取得します。

これにはHiera 1.3以降が必要です。

3
daff

Puppet 5で使用されるHiera 5の場合、次の構文を使用します。

_server_name: "service-%{lookup('env_name')}.%{::domain}"
_

...%{lookup('env_name')}は、他のhieraキーからデータを取得する部分です。

ソース

2
Greg Dubicki