使用查找命令在中的多个层次结构文件中查找相同的键

时间:2018-11-12 10:07:43

标签: puppet

我正在尝试读取多个hiera文件中存在的密钥并合并值。 我的hiera文件包含:

hierarchy:
  - name: "Per-env secrets"
    paths:
      - "puppet/hiera/dict-1.yaml"
      - "puppet/hiera/dict-2.yaml"

我的木偶脚本包含:

lookup(dictionaries,Hash).each |String $keyDico, Hash $valueDico| {
  notify{"The value of dictionary is: ${keyDico}": }

dict-1.yaml和dict-2.yaml中都包含关键的“字典”。但是,它总是从第一个匹配的hiera文件中读取并打印密钥。
我尝试将查找函数的参数“哈希”更改为“唯一”或“深度”。但这没有用。

得到错误: Error: Evaluation Error: Resource type not found: DeepError: Evaluation Error: Resource type not found: Unique
有什么办法可以做到这一点?

谢谢。

1 个答案:

答案 0 :(得分:3)

如果您查看用于指定合并行为(ref)的文档,则会发现您需要为lookup指定可选的第三个参数,并且由于“唯一”而收到该错误。被解释为数据类型。

尝试之一:

lookup(dictionaries, Hash, 'unique')

lookup(dictionaries, Hash, {'strategy' => 'unique'})

根据您发现的可读性更高。