Puppet:通过hiera的create_资源,使用augeas配置一组[keys:values]

Puppet:通过hiera的create_资源,使用augeas配置一组[keys:values],puppet,hiera,augeas,Puppet,Hiera,Augeas,我正试图创建一个接口,在一组键上进行伪循环:从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

我正试图创建一个接口,在一组键上进行伪循环:从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)
在MyYAML keys中的何处:要更新的值应该在如下的散列中

lib_BOX::MYCONF::config:
  SITE_NAME: "TEST-SITE"
  OTHER_STUFF: "DEBUG"
因此,我们的想法是将我的augeas lense(不确定,如果我真的需要“上下文”,当“incl”必须与“lens”一起使用时)应用于yaml中的配对

但是,puppet当前无法抱怨字符串而不是预期的哈希

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获得了一个哈希,我想我的资源定义中的某些内容被破坏了,但我看不出是什么

也许有人对我有什么想法

干杯,谢谢,
yaml文件中的Thomas数据无效。请将其更改为以下内容:

lib_BOX::MYCONF::config:
    first_aug:
        key: SITE_NAME
        value: "TEST-SITE"
    second_aug:
        key: OTHER_STUFF
        value : "DEBUG"
此外,您不必使用
hiera\u hash
。您只需使用
hiera
。 请阅读和下面的例子之间的差异。 可能您还必须删除行
验证\u散列($augeas\u文件)