Puppet 编写一个命令,如果查找成功则运行?
Puppet write a command that runs if lookup succeeds?
我的 Puppet 清单中有以下内容并且有效:
package {
lookup('latest_packages'): ensure => latest,
}
现在我们正在添加另一个选项来确保不存在,此查找可以包含值,但也可以不存在。当 hiera 数据不存在时,它会导致我的清单失败。
package {
lookup('latest_packages'): ensure => absent,
}
如果该数据不存在,我会在代理上取回:
Error: Could not retrieve catalog from remote server: Error 500 on
SERVER: Server Error: Function lookup() did not find a value for the
name 'removed_packages' on node dev-596e89d2fe5e08410003f2e6
如何将其设置为 运行 仅当查找找到值时?我需要在条件中包装包函数吗?
此处成功的最快途径可能是使用 lookup
函数的默认值参数。我们还可以添加数据类型和合并行为,以帮助集中查找:
lookup('removed_packages', Array[String], 'unique', [])
此外,根据您的错误消息,我猜您正在查找的密钥实际上是 absent
案例的 removed_packages
。
Array[String]
:保证你的包列表是字符串数组的数据类型。这有助于防止从您的数据中向该资源的意外输入。
unique
:将任意数量的数组和标量值组合成 return 一个合并和展平的数组,删除所有重复值。这很好,也很高效。
[]
:默认值,因此对于不存在的 removed_packages
键,资源将解析为:
package { []: ensure => absent }
这将是您目录中良性且成功编译的资源。
我的 Puppet 清单中有以下内容并且有效:
package {
lookup('latest_packages'): ensure => latest,
}
现在我们正在添加另一个选项来确保不存在,此查找可以包含值,但也可以不存在。当 hiera 数据不存在时,它会导致我的清单失败。
package {
lookup('latest_packages'): ensure => absent,
}
如果该数据不存在,我会在代理上取回:
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Function lookup() did not find a value for the name 'removed_packages' on node dev-596e89d2fe5e08410003f2e6
如何将其设置为 运行 仅当查找找到值时?我需要在条件中包装包函数吗?
此处成功的最快途径可能是使用 lookup
函数的默认值参数。我们还可以添加数据类型和合并行为,以帮助集中查找:
lookup('removed_packages', Array[String], 'unique', [])
此外,根据您的错误消息,我猜您正在查找的密钥实际上是 absent
案例的 removed_packages
。
Array[String]
:保证你的包列表是字符串数组的数据类型。这有助于防止从您的数据中向该资源的意外输入。unique
:将任意数量的数组和标量值组合成 return 一个合并和展平的数组,删除所有重复值。这很好,也很高效。[]
:默认值,因此对于不存在的removed_packages
键,资源将解析为:package { []: ensure => absent }
这将是您目录中良性且成功编译的资源。