如何从层次结构的其他位置引用 hiera 变量?

如何从层次结构的其他位置引用 hiera 变量?

因此假设在一个非常具体的 hiera YAML 文件中我定义了一个变量,例如“env_name”。

环境名称:“dev-unstable”

现在,在更通用的 hiera 文件中,我想将该变量插入字符串。

服务器名称:“服务-%{环境名称}。%{::域}”

我的测试似乎表明,在一般情况下,层次结构中其他地方的层次变量不可用于插值。不幸的是,这是真的吗?

答案1

您可以在 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 或更高版本。

答案2

对于 Puppet 5+ 中使用的 Hiera 5,请使用以下语法:

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

...%{lookup('env_name')}从其他 hiera 键获取数据的部分在哪里env_name

来源

答案3

请参阅 Greg Dubicki 的回答。

引用“hiera、hiera_array、hiera_hash 和 hiera_include 函数都已弃用。lookup 函数完全替代了所有这些函数。”

有关详细信息,请参阅:

https://puppet.com/docs/puppet/5.5/hiera_migrate.html#updated_classic_hiera_function_calls

相关内容