你有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中確實令人沮喪,所以我建議你在走下這條路線之前仔細思考,並詢問在同一個版本中是否容易獲得所有內容。
謝謝你廢話!您的回覆非常有幫助。所以只是爲了澄清最好是使用params.pp還是使用hiera進行軟件包版本等。不幸的是,我無法全面統一軟件包版本。有些系統需要有不同的版本。 – Ura718
我會在可能的情況下使用params.pp和hiera。這不是一種任何一種情況,靈活性意味着你可以爲你做最好的事情。 – jaxxstorm