簡體   English   中英

puppet使用不同的版本安裝多個samba包

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM