目标
目的是重用分层数组以避免代码重复。
尝试
以下数组已在 hiera.yaml 文件中定义:
hiera_array:
- host1
- host2
- host3
为了重用它,将 hiera_array 设置为由另一个 hiera 数组使用:
reuse::hiera_array:
- "%{hiera('hiera_array')}"
预期结果
hiera_array
如果或被reuse::hiera_array
调用,文件之间应该没有差异:
文件名.erb
<%= scope.function_hiera(['reuse::hiera_array']).join("\n") %>
/路径/到/文件名
host1
host2
host3
目前的结果
然而,调用数组的 filename.erb 模板返回:
/路径/到/文件名
-host1
-host2
-host3
+["host1, host2, host3"]
从模板中删除join
表明查找的 hiera 数组看起来不同:
["[\"host1\", \"host2\", \"host3\"]"]
对比["host1", "host2", "host3"]
讨论
看起来 hiera_array 可以在["host1, host2, host3"]
返回时重复使用,并且看起来像一个数组。但是 hiera 或 erb 函数<%= scope.function_hiera(['reuse::hiera_array']).join("\n") %>
将其解释为字符串。
问题
如何在 Puppet 中重用 Hiera 数组?