Puppet - 在 Hiera 配置中使用节点范围变量
Puppet - Using node scope variables in Hiera config
我正在尝试在我的 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
builds/special.yaml:
---
classes:
- third_class
我希望 'mynode' 在 puppet 代理刷新时得到 'third_class',但它没有,并且没有给出错误。
运行 hiera 命令给出了正确的(我认为)输出:
$ hiera classes
["first_class","second_class"]
$ hiera classes build=special
["third_class"]
有什么明显的地方我做错了吗?
%{::hostname}
有效。如果我添加 nodes/mynode.yaml,该配置将被拾取。
经过几个小时的摸索,在 puppetlabs 上报告了一个文档错误(我现在已经关闭了它,哈哈)并且几乎完全放弃了这个想法并只是创建了一个自定义事实,我发现这是一个如此简单的修复......这是有道理的...
基本上我需要做的就是将我的 site.pp 更改为:
hiera_include('classes')
node 'mynode' {
$build = special
}
至:
node 'mynode' {
$build = special
hiera_include('classes')
}
现在很有意义,因为如您所见,我需要在设置节点范围变量后调用 hiera_include
。
请注意(正如我刚刚发现的那样),如果您在顶层有 hiera_include('classes')
并且您在多个 yaml 文件中设置 类 参数,它只会使用 common.yaml.
中设置的参数
可能是最烦人的事情是,通过我所有的反复试验,我确实在某个时候把 hiera_include
放在节点声明中,我只是没有把它放在变量 Lol[=15 之后=]
我正在尝试在我的 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
builds/special.yaml:
---
classes:
- third_class
我希望 'mynode' 在 puppet 代理刷新时得到 'third_class',但它没有,并且没有给出错误。
运行 hiera 命令给出了正确的(我认为)输出:
$ hiera classes
["first_class","second_class"]
$ hiera classes build=special
["third_class"]
有什么明显的地方我做错了吗?
%{::hostname}
有效。如果我添加 nodes/mynode.yaml,该配置将被拾取。
经过几个小时的摸索,在 puppetlabs 上报告了一个文档错误(我现在已经关闭了它,哈哈)并且几乎完全放弃了这个想法并只是创建了一个自定义事实,我发现这是一个如此简单的修复......这是有道理的...
基本上我需要做的就是将我的 site.pp 更改为:
hiera_include('classes')
node 'mynode' {
$build = special
}
至:
node 'mynode' {
$build = special
hiera_include('classes')
}
现在很有意义,因为如您所见,我需要在设置节点范围变量后调用 hiera_include
。
请注意(正如我刚刚发现的那样),如果您在顶层有 hiera_include('classes')
并且您在多个 yaml 文件中设置 类 参数,它只会使用 common.yaml.
可能是最烦人的事情是,通过我所有的反复试验,我确实在某个时候把 hiera_include
放在节点声明中,我只是没有把它放在变量 Lol[=15 之后=]