從 hiera 取得 puppet ERB 中的陣列輸出

從 hiera 取得 puppet ERB 中的陣列輸出

我在 hiera.xml 中以以下格式定義了一個陣列:

 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'] %>

相關內容