我可以使用带有YAML后端的hiera来组合数组吗?

时间:2015-06-13 20:38:11

标签: arrays yaml hiera

我正在使用带有YAML后端的hiera来管理我的Puppet配置,并且我想将一些值附加到数组中。

我有一个看起来有点像这样的配置文件:

---
some_config:
  - one
  - two
  - three

some_more_config:
  - one
  - two
  - three
  - four

some_more_config始终是some_config的超集。

我想改进此文件以删除重复,但我还没弄清楚它是否可能或语法是什么:

---
some_config:
  - one
  - two
  - three

some_more_config:
  - "%{::some_config}"
  - four

在单词而不是代码中,some_more_configsome_config的全部内容加上一个附加值。

1 个答案:

答案 0 :(得分:1)

我不认为你可以在Hiera中做到这一点,因为它只能插入基于字符串的信息(数字转换为字符串)而不是数组或哈希。

来自Hiera 3: Interpolation Tokens, Variables, and Lookup Functions

  

Hiera可以插入任何Puppet数据类型的值,但该值将转换为字符串。

你仍然可以通过Puppet DSL做到这一点。以下是一些选项:

  1. Hiera 3: Lookup Types文档详细介绍了这一点,但如果这些文档位于层次结构的多个级别,则可以使用hiera_array()方法将它们合并在一起。鉴于您的层次结构是如何设置的,一些主机可以获得较小的列表,而一些主机可以获得更大的列表。

  2. puppetlabs-stdlib module也可以提供帮助。它有数组的concatunion方法。