Итак, предположим, что в очень конкретном файле 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.
(Источник)