问题描述
给定层次列表(示例值):
simplekey:
hosts:
- 'host1:8080'
- 'host2:8080'
[...]
使用 ERB 模板时,此代码:
<% @simplekey.sort.each do |key,value| -%>
<%= key %>: <%= value %>,<% end -%>
结果
hosts: ["host1:8080","host2:8080"],
<% $simplekey.each |$key,$value| { -%>
<%= $key %>: <%= $value %>,<% } -%>
导致(注意缺少的引号):
hosts: [host1:8080,host2:8080],
有什么办法可以用引号打印主机数组吗?
人偶版本:6.23.0
解决方法
获得所需结果的最快路径(可能只考虑到 EPP 对类型推断的限制)是将字符显式添加到 Hiera:
simplekey:
hosts:
- '"host1:8080"'
- '"host2:8080"'
但是,人们通常认为 ERB 比 EPP 更强大,因此除非您有令人信服的迁移理由,否则您可能希望继续使用它。此外,这可能会导致对您的数据进行其他查找时出现其他问题。
,超级简单 - 只需将引号放在 EPP 中:
<% $simplekey.each |$key,$value| { -%>
"<%= $key %>": <%= $value %>,<% } -%>