Puppet - 在Hiera config中使用节点范围变量

时间:2015-11-12 19:28:20

标签: puppet hiera

我正在尝试在我的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,则会选择该配置。

1 个答案:

答案 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之后