【发布时间】:2015-06-03 00:36:38
【问题描述】:
在 puppet 中,我想根据nodes.pp 中的配置编写一个带有字符串的文件。
-
nodes.pp定义了$sslClientCertConfig变量,该变量具有loadBalancerIp属性。 - 我想创建一个配置字符串,我们称之为
$config,不再重复字符串代码。配置字符串应该是- A:如果
loadBalancerIp是一个有效的字符串,则为字符串1和2的组合 - B:如果
loadBalancerIp为空字符串,则只有字符串2
- A:如果
- 然后,使用该配置字符串,我想设置另一个变量。
我知道 puppet 只允许在每个范围内声明一个变量名,但我不知道它是否支持 += 运算符,或者下面的变量声明是否适用于稍后的 if/else 子句。
这是我想尝试的:
if $sslClientCertConfig {
$loadBalancerIp = $sslClientCertConfig[loadBalancerIp]
$config
if $loadBalancerIp {
$config += "string1"
}
$config += "string2"
}
if $config {
$custom = "true"
} else {
$custom = "false"
}
puppet 支持这种模式吗?有什么办法可以改进吗?
【问题讨论】:
-
您要解决的根本问题是什么?这是环境的不同吗?虽然there is a Puppet pattern for string concatenation,但可能有更好的方法,也许使用 Hiera。
-
在您的示例中,您不需要任何
+=,只需使用:if loadBalancerIp { $config = "string1" } else { $config = "string2" } -
避免
+=它可能不会像您认为的那样做。
标签: string variables scope puppet