将配置应用于 puppet + hiera 中的服务器组
apply config to group of servers in puppet + hiera
需要一些帮助思考。
我有 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:
中更改什么?
人偶版本:4.10.10
We need more information here, to understand what the data is you are
sending to your 100 nodes, and why you believe this is a data problem,
i.e. a problem to be solved in Hiera rather than in your Puppet
manifests. - Alex Harvey
一个让事情顺利进行的非常简单的例子:
直到昨天所有节点都有相同的 NTP 服务器,10.1.1.1
这是由 class 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-
开头
我的问题是:如何?
无法在 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
。
当然,我会质疑基于主机名前三个字母的事实是 well-designed 事实。那 100 个节点的主机名是什么 zmb-
?该问题的答案可能为您的新事实提供了正确的基础。
需要一些帮助思考。
我有 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:
中更改什么?
人偶版本:4.10.10
We need more information here, to understand what the data is you are sending to your 100 nodes, and why you believe this is a data problem, i.e. a problem to be solved in Hiera rather than in your Puppet manifests. - Alex Harvey
一个让事情顺利进行的非常简单的例子:
直到昨天所有节点都有相同的 NTP 服务器,10.1.1.1
这是由 class 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-
我的问题是:如何?
无法在 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
。
当然,我会质疑基于主机名前三个字母的事实是 well-designed 事实。那 100 个节点的主机名是什么 zmb-
?该问题的答案可能为您的新事实提供了正确的基础。