我正在使用带有 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_config
是some_config
的全部内容加上一个附加值。
我认为你不能在 Hiera 中做到这一点,因为它只能插值基于字符串的信息(数字转换为字符串),而不是数组或哈希。
来自 Hiera 3:插值标记、变量和查找函数:
Hiera 可以插值任何 Puppet 数据类型的值,但该值将转换为字符串。
不过,您仍然可以通过Puppet DSL执行此操作。以下是一些选项:
-
Hiera 3:查找类型文档详细介绍了这一点,但如果它们位于层次结构的多个级别中,则可以使用
hiera_array()
方法将它们合并在一起。考虑到层次结构的设置方式,某些主机可以获取较小的列表,而某些主机可以获取较大的列表。 -
puppetlabs-stdlib模块也可以提供帮助。它具有数组的 concat 和 union 方法。