Puppet

如何從層次結構的其他地方引用 hiera 變數?

  • July 17, 2021

因此,假設在一個非常具體的 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

在您的情況下,您將使用:

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

這是一個優先級查找,將從找到鍵env_name的最高(最具體)層次結構級別獲取鍵的值。

這需要 Hiera 1.3 或更高版本。

對於 Puppet 5 中使用的 Hiera 5,請使用以下語法:

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

%{lookup('env_name')}從其他層次鍵獲取數據的部分在哪裡。

來源

引用自:https://serverfault.com/questions/722780