Holen Sie sich die Array-Ausgabe im Puppet ERB von Hiera

Holen Sie sich die Array-Ausgabe im Puppet ERB von Hiera

Ich habe ein Array im folgenden Format in Hiera definiert.

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

Ich versuche, die Konfigurationsdatei mit ERB im folgenden Format zu füllen

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

Ich habe Folgendes in ERB versucht, aber das Array wird als einzelne Zeichenfolge angezeigt.

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

Die profiles::xxx::master_serversHiera-Suchvorgänge werden korrekt durchgeführt.

Wie kann ich mein ERB korrigieren?

Antwort1

Erweitern des Kommentars von jordanm- Sie können die to_jsonFunktion aus dempuppetlabs-stdlib -Quelle.

In Ihrem Puppet-Manifest:

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

In Ihrem ERB:

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

verwandte Informationen