我必须编写一个函数,该函数将按顺序执行以下操作来读取变量的值:
- 检查是否定义了因子变量。如果不,
- 从 Hiera 读取变量的值。如果不,
- 使用默认值。
我已经设法在我的 Puppet 脚本中使用这个 if 条件来做到这一点。
# foo is read from (in order of preference): facter fact, hiera hash, hard coded value
if $::foo == undef {
$foo = hiera('foo', 'default_value')
} else {
$foo = $::foo
}
但是我想避免为我希望以这种方式解析的每个变量重复这个 if 条件,因此想到编写一个新的 Puppet 函数,该函数get_args('foo', 'default_value')
将返回我的值
- 一个事实事实,如果它存在,
- 层次变量,或
- 刚回来
default_value
。
我知道我可以用来lookupvar
从 ruby 函数中读取事实事实。如何从我的 Puppet ruby 函数中读取 hiera 变量?