[英]puppet install multiple samba packages with different version
我有一個混合環境,我需要在不同的紅帽服務器上安裝samba / samba3x,libsmbclient軟件包。 編寫模塊的最佳方法是什么,我應該為每個包編寫一個單獨的模塊,還是可以編寫一個將使用所有包的模塊以及如何處理不同的版本? 做這個的最好方式是什么?
這是布局:
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
這里有2個選項,您使用哪個選項取決於您想要做什么。
如果你只是想安裝最新版本或包的版本,只需使用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服務器上有不同的samba版本。 如果你需要支持,你需要使用像hiera這樣的東西來基於每個節點覆蓋上面的參數。 在Puppet中真的不鼓勵這樣做,所以我建議你在走這條路之前仔細考慮一下,然后問一下在同一個版本上獲取所有東西會不會更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.