![如何在 Puppet 中从 hiera 创建数组数组](https://linux22.com/image/670968/%E5%A6%82%E4%BD%95%E5%9C%A8%20Puppet%20%E4%B8%AD%E4%BB%8E%20hiera%20%E5%88%9B%E5%BB%BA%E6%95%B0%E7%BB%84%E6%95%B0%E7%BB%84.png)
我遇到一种情况,我必须生成在不同层次的 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
文档特别提到返回的值是“扁平数组”。它进一步澄清了情况:
如果任何匹配的值是数组,它们将被展平并包含在结果中。
现在,如果您的示例在结构上是准确的,并且每个数组都保证有四个标量元素,那么您可以做一些小技巧,一次取出数组中的四个元素,然后“重建”原始结构。我不知道有内置函数可以做到这一点,但编写一个自定义解析器函数将元素分组为四个元素并不难。