2015-09-11 33 views
0

我們的基礎架構中有3個不同的數據中心。 我使用puppetlabs/ntp模塊和saz/resolv_conf並使用hiera_include('classes')將這2個模塊安裝到所有添加到puppet的代理中。Puppet代理應根據位置選擇DNS和NTP服務器

現在我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中定義該服務?

回答

2

我會建議改變你的hiera層級,例如在你的木偶代理上定義custom facts。所以,你定義了一些自定義的事實,讓我們說data_center和明年您修改hiera層次如:

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

data_center價值應取決於您的agent位於例如讓假設在數據中心ñ劑值datacenter_n 。 終於在木偶大師創建文件datacenter_n.yaml與內容:

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

不要把它叫做'my_custom_fact'雖然。 'physical_location'或'data_center'如何? –

+0

好主意!改進。 – kkamilpl