Puppet代理应该根据位置选择DNS和NTP服务器

时间:2015-09-11 18:55:39

标签: yaml puppet hiera

我们的基础架构中有3个不同的数据中心。 我正在使用puppetlabs / ntp模块和saz / resolv_conf并使用hiera_include('classes')将这2个模块安装到添加到puppet的所有代理。

现在我的common.yaml文件如下所示:

---
classes: ['ntp', 'resolv_conf']
ntp::servers:
        - datacenter1 NTP server
        - datacenter2 NTP server
        - datacenter3 NTP server
resolv_conf::nameservers:
        - datacenter1 DNS server
        - datacenter2 DNS server
        - datacenter3 DNS server

所以我的数据中心3中的木偶代理获得了所有3个数据中心的NTP服务器和DNS服务器。

但我希望它只根据其位置选择NTP服务器和DNS服务器。

如果我的木偶代理在数据中心1中,那么请使用数据中心1中的NTP和DNS服务器。 我如何在common.yaml中定义它?

1 个答案:

答案 0 :(得分:2)

我建议改变你的hiera层次结构,例如在你的木偶代理上定义custom facts。所以你定义了一些自定义事实,让我们说data_center然后修改你的hiera层次结构,例如:

:hierarchy:
  - "%{::data_center}"
  - common

data_center的值应取决于agent所在的位置,例如假设对于Datacenter N中的代理,值为datacenter_n。 最后,在puppet master上创建文件datacenter_n.yaml,内容为:

ntp::servers:
    - datacenterN NTP server
resolv_conf::nameservers:
    - datacenterN DNS server