Puppet 条件赋值和 += 运算符
Puppet conditional assignment and += operator
在 puppet 中,我想根据 nodes.pp
中的配置编写一个带有字符串的文件。
nodes.pp
定义了 $sslClientCertConfig
变量,它有一个 loadBalancerIp
属性。
- 我想创建一个配置字符串,我们将其命名为
$config
,不再重复字符串代码。配置字符串应该是
- A:如果
loadBalancerIp
是一个有效的字符串,字符串1和2的组合
- B:若
loadBalancerIp
为空串,则只有串2
- 然后,使用该配置字符串,我想设置另一个变量。
我知道 puppet 只允许每个范围声明一个变量名,但我不知道它是否支持 +=
运算符,或者下面的变量声明是否适用于 if/else 后面的子句。
这是我想尝试的:
if $sslClientCertConfig {
$loadBalancerIp = $sslClientCertConfig[loadBalancerIp]
$config
if $loadBalancerIp {
$config += "string1"
}
$config += "string2"
}
if $config {
$custom = "true"
} else {
$custom = "false"
}
puppet 支持这种模式吗?有什么办法可以改进吗?
你不能在 puppet 中 reassign 变量。而是删除 empty 声明 $config
和
试试下面的代码
if $loadBalancerIp {
$prefix = "string1"
}
$config = "${prefix}string2"
示例:
$prefix1 = "pref1"
$config1 = "${prefix1}blabla1"
$config2 = "${prefix2}blabla2"
notify { $config1: }
notify { $config2: }
Notice: /Stage[main]/Main/Notify[pref1blabla1]/message: defined 'message' as 'pref1blabla1'
Notice: /Stage[main]/Main/Notify[blabla2]/message: defined 'message' as 'blabla2'
在 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 支持这种模式吗?有什么办法可以改进吗?
你不能在 puppet 中 reassign 变量。而是删除 empty 声明 $config
和
试试下面的代码
if $loadBalancerIp {
$prefix = "string1"
}
$config = "${prefix}string2"
示例:
$prefix1 = "pref1"
$config1 = "${prefix1}blabla1"
$config2 = "${prefix2}blabla2"
notify { $config1: }
notify { $config2: }
Notice: /Stage[main]/Main/Notify[pref1blabla1]/message: defined 'message' as 'pref1blabla1' Notice: /Stage[main]/Main/Notify[blabla2]/message: defined 'message' as 'blabla2'