如何重写此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
文件
$behind_reverse_proxy = hiera('service::proxy.behind_reverse_proxy', 'False')
$serverlist = hiera('service::proxy.serverlist')
但是puppet agent -t
导致了
SERVER上的错误400:无法在任何Hiera数据文件中找到数据项service :: proxy.serverlist,并且未提供默认值
我认为这些是相关的
[user@server ~]$ facter -y | grep 'version'
facterversion: 2.4.4
puppetversion: 3.8.2
答案 0 :(得分:1)
我从未使用过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文档中的示例似乎支持这一点。
答案 1 :(得分:1)
跟进我对如何访问重组数据的评论:
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 module。您已经在其他地方使用该模块的可能性很大,但即使不是,也可以将它引入您的堆栈。