将配置应用于puppet+;希拉

将配置应用于puppet+;希拉,puppet,hiera,facter,Puppet,Hiera,Facter,需要一些帮助思考 我有200台服务器,必须对100台应用特定配置 它们唯一的共同点是名称前缀:它们都以zmb- hiera.yaml --- :backends: - yaml :yaml: :datadir: :hierarchy: - "nodes/pro/%{::trusted.certname}" - "nodes/hom/%{::trusted.certname}" - "nodes/%{::trusted.certname}" - "%{::os.fami

需要一些帮助思考

我有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
---
classes:
    - base
    - ntp

ntp::server: '10.1.1.1'
我应该在
:层次结构:
中更改什么


傀儡版本:4.10.10



我们需要更多的信息来了解你的数据 发送到您的100个节点,以及为什么您认为这是一个数据问题, i、 一个需要在希拉而不是你的木偶中解决的问题 舱单

一个非常简单的例子可以让事情顺利进行:

直到昨天,所有节点都有相同的NTP服务器,
10.1.1.1

这是由类
ntp
设置的,该类从
common

普通。yaml

---
:backends:
  - yaml

:yaml:
  :datadir:

:hierarchy:
  - "nodes/pro/%{::trusted.certname}"
  - "nodes/hom/%{::trusted.certname}"
  - "nodes/%{::trusted.certname}"
  - "%{::os.family}"
  - common

:logger: puppet
---
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


当然,我会质疑基于主持人名字前三个字母的事实是否是精心设计的事实。这100个节点是什么导致它们拥有主机名的?这个问题的答案可能为您的新事实提供了正确的基础。

在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


当然,我会质疑基于主持人名字前三个字母的事实是否是精心设计的事实。这100个节点是什么导致它们拥有主机名的?该问题的答案可能为您提供了新事实的正确基础。

我们需要更多信息,以了解您发送到100个节点的数据是什么,以及您为什么认为这是一个数据问题,也就是说,需要在Hiera而不是傀儡舱单中解决的问题。@Alexarvey编辑了问题我们需要更多信息,以了解您发送到100个节点的数据是什么,以及为什么您认为这是一个数据问题,也就是说,一个问题要在希拉而不是在你的木偶清单中解决。@Alexarvey编辑了这个问题你是100%正确的!我应该关注为什么它们被分组/前缀为
zmb-
。它们可能共享的不仅仅是名称,我必须更改的设置可以在其他地方配置。我得到了我来找的东西。感谢您的时间。基于主机名(定义为层次结构级别)的自定义事实无疑是最快/最安全的成功途径。当然也应该考虑使用健壮的
角色定义和分组的建议,而且@RASG似乎认识到了这一点。你是100%正确的!我应该关注为什么它们被分组/前缀为
zmb-
。它们可能共享的不仅仅是名称,我必须更改的设置可以在其他地方配置。我得到了我来找的东西。感谢您的时间。基于主机名(定义为层次结构级别)的自定义事实无疑是最快/最安全的成功途径。关于使用健壮的
role
定义和分组的建议当然也应该考虑,而且@RASG似乎也认识到了这一点。