2016-11-30 88 views
0

我有一個混合環境,我需要將samba/samba3x,libsmbclient軟件包安裝到不同的紅帽服務器上。編寫模塊的最佳方式是什麼,我應該爲每個包編寫一個單獨的模塊,還是我可以編寫一個將使用所有包的模塊,以及如何處理不同的版本?做這個的最好方式是什麼?puppet安裝不同版本的多個samba軟件包

這裏的佈局:

Redhat 5: 

Host-A: 
samba3x-3.6.23-12.el5_11 
libsmbclient-3.0.33-3.41.el5_11 

Host-B: 
samba-3.0.33-3.41.el5_11 
libsmbclient-3.0.33-3.41.el5_11 

------------------------------- 

Redhat 6: 

Host-C: 
samba-3.6.23-35.el6_8.x86_64 
libsmbclient-3.6.23-35.el6_8.x86_64 

回答

0

你有2個選擇這裏,你想要做什麼使用哪種方法取決於。

如果您只想安裝最新版本或a版本的軟件包,只需使用ensure => installed即可。這將確保您安裝了該軟件包,但不會更新或安裝它們。該軟件包名稱相同在RedHat 5和RedHat 6,所以它不是太棘手:如果你需要的軟件包的具體版本

package { ['samba', 'libsmbclient']: 
    ensure => installed 
} 

,您可以使用params.pp圖案,其走紅與許多模塊。在params.pp裏面,有一個case語句,它決定你需要的軟件包版本並從那裏繼承它。它可能看起來有點像這樣。

params.pp

class samba::params { 
case $::operatingsystemmajrelease { 
'5': { 
    $samba_version = '3.6.23-12.el5_11' 
    $libsmb_version = '3.0.33-3.41.el5_11' 
    } 
'6': { 
    $samba_version = '3.6.23-35.el6_8.x86_64' 
    $libsmb_version = '3.6.23-35.el6_8.x86_64' 
    } 
} 
} 

init.pp

class samba (
    $samba_version = $samba::params::samba_version, 
    $libsmb_version = $samba::params::libsmb_version 
) inherits samba::params { 

    package { 'samba3x': 
    ensure => $samba_version 
    } 
    package { 'libsmbclient': 
    ensure => $libsmb_version 
    } 
} 

現在我注意到你的RHEL5服務器對他們有不同的桑巴版本。如果你需要支持你需要使用類似hiera的東西來覆蓋上面的參數在每個節點的基礎上。這在Puppet中確實令人沮喪,所以我建議你在走下這條路線之前仔細思考,並詢問在同一個版本中是否容易獲得所有內容。

+0

謝謝你廢話!您的回覆非常有幫助。所以只是爲了澄清最好是使用params.pp還是使用hiera進行軟件包版本等。不幸的是,我無法全面統一軟件包版本。有些系統需要有不同的版本。 – Ura718

+0

我會在可能的情況下使用params.pp和hiera。這不是一種任何一種情況,靈活性意味着你可以爲你做最好的事情。 – jaxxstorm

相關問題