我遇到了一个非常烦人的错误,迫切需要修复。我有一个 puppet 模块,其中某些内容保存在 yaml 文件 (hiera) 中,以便人们可以快速编辑该部分。
该结构是嵌套的。
模板如下:
<%= @platforms[@platform]['users_allowed'][@host].class %>
渲染结果如下:
Array
但是当我尝试迭代它时:
<% @platforms[@platform]['users_allowed'][@host].each do | pubkey | %>
<%= pubkey %>
<% end %>
木偶 说:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template somemodule/templates/authorized_keys.erb:
Filepath: /etc/puppet/modules/somemodule/templates/authorized_keys.erb
Line: 1
Detail: undefined method `each' for nil:NilClass
它怎么会突然变成零?我该如何在这里进行迭代?
我担心我会被困在这里,甚至不知道应该朝哪个方向寻找解决方案。
在这种情况下,重写没有层次结构或嵌套结构的模块不是一种选择。
答案1
我已经在我的傀儡上测试过了并且正确的语法是:
<% @platforms[@platform]['users_allowed'][@host].each do | pubkey | -%>
<%= pubkey %>
<% end -%>
我希望我能帮上忙。