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

Moj*_*ojo 8 puppet hiera

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

env_name:“开发不稳定”

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

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

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

Gre*_*cki 6

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

server_name: "service-%{lookup('env_name')}.%{::domain}"
Run Code Online (Sandbox Code Playgroud)

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

来源

  • 注意:节省你一个小时的时间,请注意有一个 Puppet `lookup` 函数和一个具有不同签名的 Hiera `lookup` 函数。文档对此并不清楚(仅包含一个子注释),作为读者,很难搜索其中之一。 (3认同)

daf*_*aff 5

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