首页 > 解决方案 > 使用查找命令在 puppet 中的多个 hiera 文件中查找相同的键

问题描述

我正在尝试读取多个 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
没有办法做到这一点?

提前致谢。

标签: puppet

解决方案


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

尝试:

lookup(dictionaries, Hash, 'unique')

或者

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

根据您发现更具可读性的内容。


推荐阅读