我有A puppet 清单会创建一个类,其中有另一个类:
class profiles::common::wlsdomains {
class {"wlsdomain":
applications => hiera('wlsapplications', ""),
crontab => hiera_hash('crontab', ""),
generateWlsdomain => hiera('generatewlsdomain'), # This line needs changing
}
}
到目前为止一切都很好。现在,问题是最后一行。我只想在某些条件下将"generateWlsdomain"
设置为"hiera('generatewlsdomain')"
。这是"if"
语句的需求。我想用这样的东西替换该行:
if $::generate == "true" {
generatewlsdomain => "true"
}
elsif $::generate == "false" {
# Do nothing; leave generatewlsdomain unset
}
else { # If $::generate is neither "true" nor "false", then get a value from Hiera
generateWlsdomain => hiera('generatewlsdomain'),
}
换句话说,我要主要看$ ::生成以决定要做什么,但是如果未设置$ ::生成的情况,请使用hiera作为备份的值。
但是,某事告诉我,我不能仅用此代码块替换现有行,因为现有行是逗号分隔的 list 的一部分,它不仅仅是通用代码行它自己的。
如果重要的话,这是在A redhat 机器上运行的。
如果您不想设置undef
关键字可以用作值,这会导致Puppet使用generateWlsdomain
的默认值。
使用此功能,为generateWlsdomain
的值设置变量:
if $::generate == "true" {
$generatewlsdomain = "true"
}
elsif $::generate == "false" {
$generatewlsdomain = undef # Do nothing; leave generatewlsdomain unset
}
else { # If $::generate is neither "true" nor "false", then get a value from Hiera
$generatewlsdomain = hiera('generatewlsdomain')
}
或更紧凑,使用选择器来测试$::generate
值并设置$generatewlsdomain
的结果:
$generatewlsdomain = $::generate ? {
"true" => "true",
"false" => undef, # Do nothing; leave generatewlsdomain unset
default => hiera('generatewlsdomain'), # If neither "true" nor "false", then get a value from Hiera
}
并将其传递到现有类声明中:
class {"wlsdomain":
applications => hiera('wlsapplications', ""),
crontab => hiera_hash('crontab', ""),
generateWlsdomain => $generatewlsdomain,
}