【发布时间】:2017-07-06 18:55:55
【问题描述】:
如何重写这个 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 导致
服务器上的错误 400:在任何 Hiera 数据文件中找不到数据项 service::proxy.serverlist 并且未提供默认值
我认为这些是相关的
[user@server ~]$ facter -y | grep 'version'
facterversion: 2.4.4
puppetversion: 3.8.2
【问题讨论】:
-
Hiera 键/子键语法相当新。我必须四处摸索才能确定它是何时引入的,但至少您引用的文档页面在 4.9 之前的任何 Puppet 版本中都没有相应的页面。
-
Puppet 3 可以与多个不同版本的 Hiera 中的任何一个配对。你有哪个版本?
-
我对 Puppet 很陌生。我在哪里检查?在傀儡代理还是服务器上?哪个命令?
-
如果您使用 Hiera 进行参数查找,那么通过
params.pp分层是一个额外的故障点,没有附加价值。另外,是否有任何事情阻止您使用受支持的 Puppet 版本? -
@cricket_007,Puppet 支持 JSON 和 YAML 数组以及分层数据中的散列,可以任意嵌套到任何深度,作为 值。每个版本都允许您通过它们的(标量)键检索这些值,并在检索后访问它们的内容。在 Puppet 4 仅通过 Hiera 的查找函数检索复合值的 part 之前,没有得到很好的支持,这就是您正在尝试做的事情。您仍然可以重组数据(未用于自动数据绑定);你只需要改变你访问它们的方法。