2014-06-10 33 views
1

我們使用puppet模塊來創建我們的主機條目,並且它變得相當大。目前我們有這個

host { hiera('server1-hostname'): 
ip   => hiera('server1-ip-host'), 
host_aliases => 'server1', 
} 

而且我們有每個服務器一次。我們還得到了一個開發和生產環境,它們的服務器數量略有不同,它們都變得有點混亂。

爲了簡化它,我在班上然後嘗試這種

define hosts::addhost() { 
host { hiera("${title}-hostname"): 
ip   => hiera("${title}-ip-host"), 
host_aliases => $title, 
} 
} 

$hostlist = server1, server2 

addhost {$hostlist: } 

但給我的各種錯誤,如

在「

語法錯誤: 「;預計'}'

這可能嗎?這只是標點問題還是需要完全不同的方法?

+0

理論上可以使用'$ hostlist = [server1,server2,...]'(介意'[]'s),但是,有更好的方法。答案即將出現。 –

回答

1

使用exported resources來解決這個問題不會那麼麻煩。

每個服務器出口自己的主項,依靠事實如$::hostname

@@host { "$::fqdn": ip => $::ipaddress_eth0, host_aliases => $::hostname, tag => "server-list" } 

而且還從所有imorts所有這些資源(其他)的機器

Host<<| tag == "server-list" |>> 

當然你也可以使用Hiera使覆蓋這些值成爲可能,例如如果facter選擇了錯誤的地址,則導出特定的IP地址。

@@host { "$::fqdn": 
    ip => hiera('hosts-ip-address', $::ipaddress_eth0), 
    host_aliases => $::hostname, 
    tag => "server-list" 
} 

如果堅持有在Hiera您完整的內容,您不妨考慮以下結構

hosts: 
    "server1-hostname": 
    ip: "a.b.c.d" 
    host_aliases: server1 
    "server2-hostname": 
    ... 

,並在清單中根本

create_resources('host', hiera('hosts')) 

但這是多餘的信息,看作是因素可以收集所有這些對你來說(見上)。

相關問題