因此,假设在一个非常具体的 hiera YAML 文件中,我定义了一个变量,例如“env_name”。
env_name:“开发不稳定”
现在在一个更通用的 hiera 文件中,我想将该变量插入到一个字符串中。
server_name: "service-%{env_name}.%{::domain}"
我的测试似乎暗示来自层次结构中其他地方的 hiera 变量在一般情况下不可用于插值。不幸的是,这是真的吗?
对于 Puppet 5 中使用的 Hiera 5,请使用以下语法:
server_name: "service-%{lookup('env_name')}.%{::domain}"
Run Code Online (Sandbox Code Playgroud)
...%{lookup('env_name')}
从其他 hiera key 获取数据的部分在哪里。
(来源)
您可以在 Hiera 中使用 Hiera 查找功能。此处的文档:https : //docs.puppetlabs.com/hiera/1/variables.html#using-lookup-functions
在您的情况下,您将使用:
server_name: "service-%{hiera('env_name')}.%{::domain}"
Run Code Online (Sandbox Code Playgroud)
这是一个优先级查找,将从env_name
它找到键的最高(最具体)层次结构级别获取键的值。
这需要 Hiera 1.3 或更高版本。