[英]How to add an if statement inside a Puppet class creation
我有一个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'),
}
换句话说,我主要考虑$ :: generate来决定要做什么,但是如果未设置$ :: generate,则使用Hiera中的值作为备份。
但是,有些事情告诉我,我不能只用该代码块替换现有行,因为现有行是逗号分隔列表的一部分 ,而不仅仅是它自己的通用代码行。
如果很重要,它将在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,
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.