我可以使用通配符木偶包确保覆盖多个版本

使用木偶,我想以受控的方式在我的(CentOS 5&6服务器)上更新软件。 所以我不想使用ensure=>latest ,而是ensure=>3.0.1-1

例:

 class puppet::installation inherits puppet { package { "puppet": ensure => "3.0.1-1", } } 

更新工作正常,但傀儡代理不断抱怨有一个区别:

 /Stage[main]/Puppet::Installation/Package[puppet]/ensure: current_value 3.0.1-1.el6, should be 3.0.1-1 (noop) 

我可以通过将保证规则更改为3.0.1-1.el6来解决这个问题,但是在CentOS 5上却不行。

有没有一个简短/干净的方法来解决这个问题,或者我必须写入单独的,os释放相关的规则。

我一直在search解决scheme,但没有find任何有关这个问题。

任何build议或参考相关的例子,将不胜感激。

你将不得不用一个case语句来设置一个variables,就像这样:

 class puppet::installation inherits puppet { case $::operatingsystemrelease { '5': { $puppet_ver = '3.0.1-1'} default: { $puppet_ver = '3.0.1-1.el6'} } package { 'puppet': ensure => $puppet_ver, } } 

不过,使用这种逻辑的params.pp文件是一个更好的devise。 阅读关于params.pp在这里: http : //www.example42.com/? q=understandExample42PuppetModules

木偶真的没有任何function,但(尽pipe他们真的需要它)。

您可以使用yum-versionlock yum插件来locking特定版本的特定RPM包,然后使用puppet来控制版本锁configuration。

有关其他解决方法,请参阅此相关问题 。

实际上,无论操作系统如何,我都可以使用通配符来安装特定的Python版本。 我的python包代码如下。

 package { "python-dev": ensure => "2.7.3*"; "python-setuptools": ensure => installed; "python-pip": ensure => installed; "libxml2-dev": ensure => installed; "libxslt-dev": ensure => installed; } 

通过使用2.7.3 *作为保证版本,它在我的stream浪VM上安装了python 2.7.3-0ubuntu2.2。 我正在使用2.7.19版的Puppet。