如何在 Puppet 中从 hiera 创建数组数组

如何在 Puppet 中从 hiera 创建数组数组

我遇到一种情况,我必须生成在不同层次的 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文档特别提到返回的值是“扁平数组”。它进一步澄清了情况:

如果任何匹配的值是数组,它们将被展平并包含在结果中。

现在,如果您的示例在结构上是准确的,并且每个数组都保证有四个标量元素,那么您可以做一些小技巧,一次取出数组中的四个元素,然后“重建”原始结构。我不知道有内置函数可以做到这一点,但编写一个自定义解析器函数将元素分组为四个元素并不难。

相关内容