Назад | Перейти на главную страницу

Как ссылаться на переменную hiera из другого места иерархии?

Итак, предположим, что в очень конкретном файле YAML Hiera я определяю переменную, такую ​​как "env_name".

env_name: "dev-нестабильный"

Теперь в более общем файле hiera я хотел бы вставить эту переменную в строку.

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

Мое тестирование, похоже, подразумевает, что переменные иерархии из других частей иерархии не доступны для интерполяции в общих случаях. К сожалению, это правда?

Вы можете использовать функции поиска 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 или выше.

Для Hiera 5, используемого в Puppet 5, используйте следующий синтаксис:

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

...где %{lookup('env_name')} это часть, которая получает данные от другого ключа hiera.

(Источник)