Получить вывод массива в puppet ERB из hiera

Получить вывод массива в puppet ERB из hiera

У меня есть массив, определенный в следующем формате в hiera.

 master_servers:
  - "stage-01.com"
  - "stage-02.com"

Я пытаюсь заполнить файл конфигурации с помощью ERB в следующем формате

discovery.zen.ping.unicast.hosts: ["stage-01.com", "stage-02.com" ]

Я попробовал следующее в ERB, но массив выглядит как одна строка.

discovery.zen.ping.unicast.hosts: <%= scope['::profiles::xxx::master_servers'] %>

Он profiles::xxx::master_serversправильно выполняет поиск hiera.

Как я могу исправить свой ERB?

решение1

Расширяя комментарий из jordanm- можно использовать to_jsonфункцию из puppetlabs-stdlibмодуля -источник.

В вашем манифесте Puppet:

class profiles::xxx(
  $master_servers,
) {
  $master_servers_json = to_json($master_servers)
  ...
}

В вашем ERB:

discovery.zen.ping.unicast.hosts: <%= scope['::profiles::xxx::master_servers_json'] %>

Связанный контент