如何在Puppet类创建中添加if语句

时间:2017-04-18 11:37:23

标签: puppet hiera

我有一个Puppet清单,它创建一个类,其中包含另一个类:

class profiles::common::wlsdomains {
    class {"wlsdomain":
            applications      => hiera('wlsapplications', ""),
            crontab           => hiera_hash('crontab', ""),
            generateWlsdomain => hiera('generatewlsdomain'), # This line needs changing
    }
}

到目前为止一切顺利。现在,问题是最后一行。我只想设置" generateWlsdomain" to" 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机器上运行。

1 个答案:

答案 0 :(得分:1)

gl_FragCoord关键字可以用作值,如果您不想设置它,这将导致Puppet使用undef的默认值。

使用此选项,为generateWlsdomain

的值设置变量
generateWlsdomain

或更紧凑,使用a selector来测试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
}