我可以根据p中hiera.yaml文件中的名称选择层次结构吗?

时间:2019-07-09 08:26:18

标签: puppet hierarchy hiera

我正在使用hiera5,并且我想根据其名称从其中一个组中读取层次结构。 例如目前我有:

version: 5
defaults:
  datadir: "/"
  data_hash: yaml_data
hierarchy:
  - name: "ABC"
    paths:
      - "env/env-data1.yaml"
      - "env/env-data2.yaml"
      - "env/env-data3.yaml"

我想添加多个这样的层次结构:

hierarchy:
  - name: "ABC"
    paths:
      - "env/env-data1.yaml"
      - "env/env-data2.yaml"
      - "env/env-data3.yaml"
  - name: "DEF"
    paths:
      - "env/env-data4.yaml"
      - "env/env-data5.yaml"
      - "env/env-data6.yaml"
  - name: "GHI"
    paths:
      - "env/env-data7.yaml"
      - "env/env-data8.yaml"
      - "env/env-data9.yaml"

并且一次只读取其中一个组的文件,可以说“ ABC”。

有没有一种方法可以在调用script脚本时将层次结构名称作为参数传递?

其他信息:
我正在从jenkins运行一个shell脚本,该脚本会触发人偶脚本。

puppet apply --hiera_config=${WORKSPACE}/hiera.yaml ${WORKSPACE}/puppet-script.pp

谢谢!

1 个答案:

答案 0 :(得分:1)

  

我想添加多个这样的层次结构:[...]

语法很好,但是它没有描述多个层次结构。它描述了一个多层层次结构(实际上是通常的情况)。具有多个级别才使其具有层次结构-这是Hiera与Puppet拥有的其他外部数据机制相比的显着特征。

  

并且一次只读取其中一个组的文件,可以说“ ABC”。

没有,没有发生。希拉不是那样的。

  

有没有一种方法可以在调用script脚本时将层次结构名称作为参数传递?

否,但是您可以指定另一个hiera.yaml配置文件,如您已经演示的那样。如果要为不同的运行使用不同的层次结构,请在其自己的(完整)配置文件中定义每个层次结构,然后为每种用途选择合适的配置文件。