在类中定义依赖项时,每个依赖项Package
只能全局定义一次。我有配置层次结构,一些包应该安装在所有机器上(默认配置),但其他包应该只安装在某些类别的机器上。当 Puppet 威胁作为重复声明时,我应该如何检查该包是否已经在机器上?
Duplicate declaration: Package[wget] is already declared
我应该使用这样的功能吗?
if defined( Package[$package] ) {
debug("$package already installed")
} else {
package { $package: ensure => $ensure }
}
我希望配置工具默认处理这个问题......我错过了什么吗?
您可以使用stdlib 模块中的 ensure_resource() :
所以,比如说,如果 git 已经被其他类安装了,那将被跳过。在整个 puppet 配置中,您不应该只定义一次包。
当您有重复的包时,这是处理它的一种方法。另一种方法是首先通过使用虚拟资源来避免问题:
声明一个虚拟资源
实现一个虚拟资源(可以多次实现资源):
另一种方法是将重复的代码分离到另一个类中——即“wget”类。
参考:虚拟资源 Puppet 文档