我正在尝试在我的hiera.yaml配置中使用节点范围变量,这显然应该相对简单,但它只是不适合我Lol
像这样的hiera.yaml:
---
:backends:
- yaml
:yaml:
:datadir: /etc/puppet/hieradata
:hierarchy:
- nodes/%{::hostname}
- builds/%{build}
- common
我的site.pp就像这样:
hiera_include('classes')
node 'mynode' {
$build = special
}
其他yaml文件,
common.yaml:
---
classes:
- first_class
- second_class
建立/ special.yaml:
---
classes:
- third_class
我希望'mynode'在刷新木偶代理时获得'third_class',但它没有,并且没有错误。
运行hiera命令给出了正确的(我认为)输出:
$ hiera classes
["first_class","second_class"]
$ hiera classes build=special
["third_class"]
我在这里做错了吗?
%{::hostname}
有效。如果我添加了nodes / mynode.yaml,则会选择该配置。
答案 0 :(得分:1)
经过几个小时的搔痒,报告了puppetlabs上的文档错误(我现在已经关闭了Lol)并且几乎完全抛弃了这个想法而只是创建了一个自定义的事实,我发现它是一个如此简单的修复...而且它有道理......
基本上我需要做的就是改变我的site.pp:
hiera_include('classes')
node 'mynode' {
$build = special
}
为:
node 'mynode' {
$build = special
hiera_include('classes')
}
现在很有意义,因为正如您所看到的,我需要在设置节点范围变量后调用hiera_include
。
尽管如此(正如我刚刚发现的那样),如果您在顶层有hiera_include('classes')
而在多个yaml文件中设置类参数,它将只使用共同设置的参数.yaml。
可能是最烦人的事情,就是通过我所有的试验和错误,我在某些时候把hiera_include
放在节点声明中,我只是没有把它放在变量Lol之后