如何从Puppet函数中读取Hiera值?



我必须编写一个函数,它将依次执行以下操作来读取变量的值:

  • 检查是否定义了因子变量。如果不是,
  • 从Hiera读取变量的值。如果不是,
  • 使用默认值

我已经设法在我的木偶脚本使用这个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条件,因此考虑编写一个格式为get_args('foo', 'default_value')的新Puppet函数,它将返回

的值。
  1. 如果存在,则为事实因素,
  2. 一个层次变量,或者
  3. 只返回default_value

我知道我可以使用lookupvar从ruby函数中读取因子事实。我如何从我的木偶ruby函数读取层次变量?

您可以使用function_前缀调用已定义的函数。

您已经找到了lookupvar函数。

把它们放在一起:

module Puppet::Parser::Functions
  newfunction(:get_args, :type => :rvalue) do |args|
    # retrieve variable with the name of the first argument
    variable_value = lookupvar(args[0])
    return variable_value if !variable_value.nil?
    # otherwise, defer to the hiera function
    function_hiera(args)
  end
end

相关内容

  • 没有找到相关文章

最新更新