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

时间:2015-11-18 16:48:25

标签: puppet hiera augeas

我正在尝试通过一组键创建一个伪循环接口:来自my 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镜头(不确定,如果我真的需要'上下文',当'incl'必须与'镜头'一起使用时)来自我的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得到一个哈希,我想我的资源定义中的某些内容被破坏了,但是我看不到什么?

也许有人对我有想法?

干杯谢谢,   托马斯

1 个答案:

答案 0 :(得分:0)

yaml文件中的数据无效。将其更改为:

lib_BOX::MYCONF::config:
    first_aug:
        key: SITE_NAME
        value: "TEST-SITE"
    second_aug:
        key: OTHER_STUFF
        value : "DEBUG"

此外,您不必使用hiera_hash。您只能使用hiera。 请阅读hiera lookup functions之间的差异,并按照lookup types的示例进行操作。 您可能还必须删除第validate_hash($augeas_files)行。