Назад | Перейти на главную страницу

Puppet, hiera и erb - erb не распознает массив

У меня довольно неприятная ошибка, которую я отчаянно пытаюсь исправить. У меня есть марионеточный модуль, в котором определенные вещи хранятся в файле 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

Как он внезапно стал нулевым и как мне здесь повторить?

Боюсь, я застрял здесь и даже не знаю, в каком направлении искать решение.

Модуль перезаписи без hiera или без вложенной структуры в этом случае не подходит.

Я тестировал свою марионетку, и правильный синтаксис, который работал, был:

<% @platforms[@platform]['users_allowed'][@host].each do | pubkey | -%>
  <%= pubkey %>
<% end -%>

Надеюсь, я помог.