我遇到一种情况,我必须生成在不同层次的 puppet 中的 hiera 中声明的数组数组。
假设在环境层面我有一个声明
test:
- [a,b,c,d]
- [e,f,g,h]
在 common.yaml 中我有一个声明
test:
- [i,j,k,l]
- [m,n,o,p]
现在,当我传递hiera_array
值时,我希望输出为
[[i,j,k,l],[m,n,o,p],[a,b,c,d],[e,f,g,h]]
当前输出[i,j,k,l......e,f,g,h]
基本上是一个合并的数组值。
我希望它采用数组的格式,以便我可以将其传递给模板并将其应用于所需的逻辑。请告诉我是否有任何方法可以实现这一点。
答案1
我相信,你注定要失败(总体而言)。hiera_array
文档特别提到返回的值是“扁平数组”。它进一步澄清了情况:
如果任何匹配的值是数组,它们将被展平并包含在结果中。
现在,如果您的示例在结构上是准确的,并且每个数组都保证有四个标量元素,那么您可以做一些小技巧,一次取出数组中的四个元素,然后“重建”原始结构。我不知道有内置函数可以做到这一点,但编写一个自定义解析器函数将元素分组为四个元素并不难。