如何将或添加到puppet条件中

如何将或添加到puppet条件中,puppet,Puppet,我是一个木偶新手,我需要修改现有的木偶脚本 因此,我在链条中: package { 'python-pip': ensure => 'present', } -> 事实上应该是这样 package { 'python2-pip': ensure => 'present', } -> 我是否可以添加一个OR条件,使其同时适用于“python2-pip”和“python-pip”?因此,如果安装了这些软件包中的任何一个,结果都是肯定的——有可能吗 我是

我是一个木偶新手,我需要修改现有的木偶脚本

因此,我在链条中:

package { 'python-pip':
    ensure  => 'present',
} ->
事实上应该是这样

package { 'python2-pip':
    ensure  => 'present',
} ->
我是否可以添加一个OR条件,使其同时适用于“python2-pip”和“python-pip”?因此,如果安装了这些软件包中的任何一个,结果都是肯定的——有可能吗

我是否可以添加一个OR条件,使其同时适用于“python2-pip”和“python-pip”?因此,如果安装了这些软件包中的任何一个,结果都是肯定的——有可能吗

不,这是不可能的。每个
资源只管理一个包,声明这样的资源意味着Puppet应该尝试确保指定的状态——在本例中,指定包的某个版本安装在目标节点上。如果声明两个包,Puppet将尝试管理两个包

如果真的是“实际上应该是”python2 pip,那么您只需适当地更改清单

但是,如果您管理的节点是异构的,那么实际上可能意味着在严格的节点子集上,包名称应该是“python2-pip”,而在其他节点上,当前的“python-pip”是正确的。这种情况比较常见,通常通过使用节点事实来调整声明来解决

这可以采取使用
if
块或其他条件语句在可选的完整声明之间切换的形式,但通常一种更为复杂。例如,一种常见的方法是有条件地只选择包名,将结果存储在变量中,然后将其插入到声明中。也许是这样的:

$pip_package = $::operatingsystemmajrelease ? {
  default => 'python-pip',
  '7'     => 'python2-pip'
}

package { $pip_package:
    ensure  => 'present',
}

由于您是一名新手,因此值得一看一些现有模块是如何处理此类问题的。Github上有许多模块供您浏览,您从Forge安装的任何东西都至少在您的机器上本地可用供您检查。

不清楚您想要实现什么。通常,您将探索一个选择器:。但是,请解释问题以及您期望的结果是什么,以便我们能够提供一个好的答案。补充:那么,如果安装了这些软件包中的任何一个,结果将是肯定的-可能吗?