我有一个混合环境,需要在不同的红帽子服务器上安装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 发布于 2016-12-01 01:16:07
这里有两个选项,您使用的选项取决于您想要做什么。
如果您只想安装最新版本或版本的包,只需使用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版本。如果您需要支持这一点,则需要使用类似于希拉的方法,在每个节点的基础上覆盖上述参数。这是真的不鼓励在木偶,所以我会建议你仔细考虑,然后再走这条路线,并问它会不会是更容易得到所有的东西在同一版本。
https://stackoverflow.com/questions/40897062
复制相似问题