因此,假设在一个非常具体的 hiera YAML 文件中,我定义了一个变量,例如“env_name”。
env_name:“开发不稳定”
现在在一个更通用的 hiera 文件中,我想将该变量插入一个字符串。
server_name: "服务-%{env_name}.%{::domain}"
我的测试似乎暗示层次结构中其他地方的 hiera 变量在一般情况下不可用于插值。不幸的是,这是真的吗?
因此,假设在一个非常具体的 hiera YAML 文件中,我定义了一个变量,例如“env_name”。
env_name:“开发不稳定”
现在在一个更通用的 hiera 文件中,我想将该变量插入一个字符串。
server_name: "服务-%{env_name}.%{::domain}"
我的测试似乎暗示层次结构中其他地方的 hiera 变量在一般情况下不可用于插值。不幸的是,这是真的吗?
您可以在 Hiera 中使用 Hiera 查找函数。此处的文档:https ://docs.puppetlabs.com/hiera/1/variables.html#using-lookup-functions
在您的情况下,您将使用:
这是一个优先级查找,将从找到键
env_name
的最高(最具体)层次结构级别获取键的值。这需要 Hiera 1.3 或更高版本。
对于 Puppet 5 中使用的 Hiera 5,请使用以下语法:
...
%{lookup('env_name')}
从其他层次键获取数据的部分在哪里。(来源)
请参阅 Greg Dubicki 的答案。
引用“hiera、hiera_array、hiera_hash 和 hiera_include 函数都已弃用。查找函数是所有这些函数的完全替代品。”
详情见:
https://puppet.com/docs/puppet/5.5/hiera_migrate.html#updated_classic_hiera_function_calls