hiera() 函数和 YAML 哈希查找



如何重写这个 YAML 使其更有条理,然后使用 hiera 函数在 Puppet 中引用它?


目前,我正在使用一种看起来非常扁平且难以阅读的 hieradata 语法。

service::proxy::behind_reverse_proxy: true
service::proxy::proxy_timeout: 300
service::proxy::serverlist:
- host1.fqdn
- host2.fqdn

例如,并在params.pp文件中抓取这些

$behind_reverse_proxy = hiera('service::proxy::behind_reverse_proxy', 'False')
$serverlist = hiera('service::proxy::serverlist')

我想我可以像这样重写 YAML 以使其更具可读性......

service::proxy:
behind_reverse_proxy: true
proxy_timeout: 300
serverlist:
- host1.fqdn
- host2.fqdn

并根据更新了params.pp文件

  • Hiera Key.subkey 语法
  • 与结构化数据交互

$behind_reverse_proxy = hiera('service::proxy.behind_reverse_proxy', 'False')
$serverlist = hiera('service::proxy.serverlist')

然而,在puppet agent -t导致

服务器上的错误 400:在任何 Hiera 数据文件中找不到数据项服务::p roxy.serverlist,并且未提供默认值


我认为这些是相关的

[user@server ~]$ facter -y | grep 'version'
facterversion: 2.4.4
puppetversion: 3.8.2

跟进我关于如何访问重组数据的评论:

service::proxy:
behind_reverse_proxy: true
proxy_timeout: 300
serverlist:
- host1.fqdn
- host2.fqdn

在您的清单中,而不是这个...

$behind_reverse_proxy = hiera('service::proxy.behind_reverse_proxy', 'False')
$serverlist = hiera('service::proxy.serverlist')

。您可以这样做:

$proxy_info = merge(
{ 'behind_reverse_proxy' => false, 'serverlist' => [] },
hiera('service::proxy', {})
)
$behind_reverse_proxy = $proxy_info{'behind_reverse_proxy'}
$serverlist = $proxy_info{'serverlist'}

merge()函数不是内置的,而是来自Puppet(以前是PuppetLabs(广泛使用的stdlib模块。 您很有可能已经在其他地方使用该模块,但即使没有,将其引入堆栈也可能非常值得。

我从未使用过 Hiera,但我认为问题是当你想要映射(哈希(时,你有一个序列(数组(。

在下面的 YAML 中,service::proxy键的值是包含三个元素的序列,每个元素都是具有一个键的映射:

service::proxy:
- behind_reverse_proxy: true
- proxy_timeout: 300
- serverlist:
- host1.fqdn
- host2.fqdn

不过,您可能希望service::proxy是具有三个键的映射:

service::proxy:
behind_reverse_proxy: true
proxy_timeout: 300
serverlist:
- host1.fqdn
- host2.fqdn

您链接到的 Hiera 文档中的示例似乎支持这一点。

相关内容

  • 没有找到相关文章

最新更新