目标
目标是重用hiera数组以避免代码重复。
尝试
在hiera.yaml文件中定义了以下数组:
hiera_array:
- host1
- host2
- host3
为了重用它,hiera_array设置为由另一个hiera数组使用:
reuse::hiera_array:
- "%{hiera('hiera_array')}"
预期结果
如果调用hiera_array
或reuse::hiera_array
,则文件之间不应存在差异:
filename.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数组?