Puppet安装包大于&;少于

Puppet安装包大于&;少于,puppet,Puppet,如果我有以下功能,它可以正常工作: package { 2klic-certificates>=1.0.3: ensure => installed, } 但是2klic证书来自一个定制的存储库,我们也有测试版。所以我还要设定一个上限。我正在努力: package { 2klic-certificates>=1.0.3<1.1.0: ensure => installed, } 包{ 2klic证书>=1.0.3已安装, } 这将返回错误: Err

如果我有以下功能,它可以正常工作:

package { 
  2klic-certificates>=1.0.3: ensure => installed,
}
但是
2klic证书
来自一个定制的存储库,我们也有测试版。所以我还要设定一个上限。我正在努力:

package { 
  2klic-certificates>=1.0.3<1.1.0: ensure => installed,
}
包{
2klic证书>=1.0.3已安装,
}
这将返回错误:

Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold --force-yes install 2klic-certificates>=1.0.3<1.1.0' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package 2klic-certificates>
Error: /Stage[main]/Main/Node[default]/Package[2klic-certificates>=1.0.3<1.1.0]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold --force-yes install 2klic-certificates>=1.0.3<1.1.0' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package 2klic-certificates>
错误:执行'/usr/bin/apt get-q-y-o DPkg::Options::=--force confold--force yes install 2klic certificates>=1.0.3=1.0.3=1.0.3并已安装,
}

通过查看,我没有看到显式指定最小和最大版本号的选项。这可能吗?

我将保留此选项,因为此答案不是一个完整的解决方案,而是一个解决方案(已确认可用于基于apt的系统)

我们可以自由地控制我们的包命名约定,并将其与通配符相结合。例如:

package { 
  2klic-certificates>=1.0.*: ensure => latest,
}
将确保安装1.0节中的最新软件包

因此,如果一个节点的版本为
1.0.1
,并且
1.0.3
可用,并且我们有
1.1.0
的beta版本,上述操作将确保
1.0.3
安装在我们的主节点上,并忽略beta版本

如前所述,这不是一个真正的解决方案,因为您不能始终控制版本的命名约定。它适用于我的初始问题,但如果您想要介于
1.0.1
1.1.5
之间,它基本上是无用的



在这种情况下,我建议您查看@MattSchuchard发布的代码片段。不,您不能这样做。我以前通过自定义事实/自定义函数/定义类型组合实现了这一点。@MattSchuchard对听到更多感兴趣。我无法想象一个事实会如何在这个用例中发挥作用。@MattSchuchard我想也许您将程序的版本存储为一个事实,并在此基础上使用了不同的config文件?请检查以下内容:,以yum提供程序为例,这就是为什么您不能这样做的原因:。在不陷入困境的情况下,在确保中指定的字符串将以-作为前缀,并分配给该行中所需的变量。
package { 
  2klic-certificates>=1.0.*: ensure => latest,
}