需要一些帮助思考。
我有200台服务器,必须将特定配置应用于100。
他们共同的唯一共同点是名称前缀:它们都以zmb-
hiera.yaml
---
:backends:
- yaml
:yaml:
:datadir:
:hierarchy:
- "nodes/pro/%{::trusted.certname}"
- "nodes/hom/%{::trusted.certname}"
- "nodes/%{::trusted.certname}"
- "%{::os.family}"
- common
:logger: puppet
我应该在:hierarchy:
中改变什么?
puppet version:4.10.10
我们需要更多信息,以了解您的数据 发送到您的100个节点,以及为什么您认为这是一个数据问题, 即在Hiera而不是在你的Puppet中要解决的问题 体现。 - Shiny documentation
一个非常简单的例子:
直到昨天所有节点都有相同的NTP服务器,10.1.1.1
这是由类ntp
设置的,它从common
common.yaml
---
classes:
- base
- ntp
ntp::server: '10.1.1.1'
NTP / init.pp
class ntp ($server) {
...
}
现在,今天,我想将100个服务器的IP更改为10.1.1.99
,并且它们的主机名都以zmb-
开头
我的问题是:如何?
答案 0 :(得分:2)
在Hiera层次结构定义中,没有办法使用正则表达式匹配(据我所知,据我所知)。
您需要首先创建自定义事实。例如,您可以写:
Facter.add(:host_code) do
setcode do
Facter.value(:hostname).slice(0..2)
end
end
然后你可以添加一个级别:
:hierarchy:
- "nodes/%{::host_code}" # here
- "nodes/pro/%{::trusted.certname}"
- "nodes/hom/%{::trusted.certname}"
- "nodes/%{::trusted.certname}"
- "%{::os.family}"
- common
然后创建一个文件hieradata/nodes/zmb.yaml
。
当然,我会质疑基于主机名前三个字母的事实是一个设计良好的事实。那些导致他们拥有主机名zmb-
的100个节点是什么?这个问题的答案可能会为你提供适当的基础。