我正在尝试根据特定标志加载 hiera 文件。
Hiera 层次结构是
:hierarchy:
- "%{environment}/%{::fqdn}"
- "%{environment}/%{nodetype}"
- "%{environment}/%{calling_module}"
- "%{environment}"
- "common/%{calling_module}"
- "common"
实际上是想在“nodetype”级别分解一些配置。目标是避免在文件中放置相同的分层“块”:
- 环境/test/myhost1.example.com.yaml
- 环境/测试/myhost2.example.com.yaml
- 环境/测试/myhost3.example.com.yaml
而是常见的部分:
- environment/test/nfs-server.yaml 用于所有 nfs 服务器相关的通用配置
- environment/test/backend-server.yaml 用于所有后端服务器相关的公共
之后,所有服务器都将使用 fqdn yaml 文件获得自己的特定值。(这部分还可以)
目前,我不知道如何将“nodetype”数据提供给 hiera 上下文。
我试图将它放入主清单文件中(是的,我阅读了文档,我知道这是一个坏主意,但即使尝试绝望,它也不管用)
node 'nfs1.example.com', 'nfs2.example.com' {
$nodetype= 'nfs-server'
但是hiera 没有加载文件environment/test/nfs-server.yaml 。
我也尝试使用自定义事实,但使用自定义事实
modules/hosts/facts.d/host-fact-test.txt
文件被发送到代理的主机,但在这里,hiera 不使用专用文件。
Notice: /File[/var/lib/puppet/facts.d/host-fact-test.txt]/ensure: defined content as '{md5}d7492faae1bfe55f65f9958a7a5f6df9'
如果我使用通知木偶命令,该值是好的
if $nodetype== 'nfs-server' {
notify {"Running with \$nodetype ${nodetype} ID defined":
withpath => true,
}
}
结果:
Notice: /Stage[main]/attemps/Notify[Running with $nodetype nfs-server ID defined]/message: Running with $nodetype nfs-server ID defined
Stack 是 Ubuntu 14 上的 Puppet 开源,所以版本是:
- 木偶 3.8.4
- 希拉 1.3.4
- 因素 2.4.4
有什么想法或建议可以让它发挥作用(或实现类似的行为)?
Puppet master 进程通常不使用 中的配置
/etc/hiera.yaml
,这可能会造成混淆。对于 Puppet3.x
,通常是/etc/puppet/hiera.yaml
.您可以确保使用(以 root 身份)
在主机上。