Puppet:使用augeas通过hiera的create_resources配置一组[keys:values]



我正试图创建一个接口,在一组密钥上伪循环:来自我的hiera yaml的值,以使用augeas 更新配置文件

define augeas_config (
  $key,
  $value
)
{
  augeas{ "/var/MYCONF/MYCONF.def":
    lens => "/var/lib/puppet/lib/augeas/lenses/MYCONF.aug",
    incl => "/var/MYCONF/MYCONF.def",
    context => "/var/MYCONF/MYCONF.def",
    changes => [ "set $key $val" ],
  }
}
$augeas_files = hiera_hash('lib_BOX::MYCONF::config', {} )
validate_hash($augeas_files)
create_resources('augeas_config', $augeas_files)

在我的yaml密钥中:要更新的值应该在类似的散列中

lib_BOX::MYCONF::config:
  SITE_NAME: "TEST-SITE"
  OTHER_STUFF: "DEBUG"

因此,这个想法是将我的augeas lense(不确定,如果我真的需要"context",当"incl"必须与"lens"一起使用时)应用于我的yaml中的对。

然而,木偶失败了,目前抱怨的是字符串而不是预期的散列

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Function Call, can't convert String into Hash at /etc/puppet/environments/development/modules/lib_BOX/manifests/config.pp:28:3 on node MY.NODE.FOO

其中第28行是一个带有"create_resources('augeas_config'…"的行。由于我从hiera得到了一个散列,我想我的资源定义中有什么东西坏了,但我看不到什么??

也许有人对我有想法?

干杯,谢谢,Thomas

您的yaml文件中的数据无效。将其更改为类似的内容
lib_BOX::MYCONF::config:
    first_aug:
        key: SITE_NAME
        value: "TEST-SITE"
    second_aug:
        key: OTHER_STUFF
        value : "DEBUG"

此外,您不必使用hiera_hash。您可以只使用hiera。请阅读层次结构查找函数之间的差异,并遵循有关查找类型的示例。您可能还必须删除validate_hash($augeas_files)行。

相关内容

  • 没有找到相关文章

最新更新