簡體   English   中英

來自外部文件的人偶迭代

[英]Puppet iteration from external file

我是配置管理的新手,僅供參考。

我正在嘗試偽造elasticsearch,並希望在文件中有一個Elasticsearch節點的主列表(該列表可用於多種用途,而不僅僅是這個目的)。

我想通過ERB模板添加elasticsearch.yml並將FDQN的列表擴展到Discovery.zen.ping.unicast.hosts:[]參數中。

例如,我在模塊/文件中有一個名為es_hosts的外部文件,該文件包含:

host1.domain.com 
host2.domain.com 
host3.domain.com 
host4.domain.com

然后,當木偶構建ERB模板時,請將其放在參數中:

discovery.zen.ping.unicast.hosts: ["host1.domain.com", "host2.domain.com", "host3.domain.com", "host4.domain.com"]

我已經嘗試了一些方法,但是我無法解決這個問題。

我會將此列表用於構建防火牆規則等其他事情,因此我希望有一個主列表供參考,我的團隊可以對其進行更新。

謝謝你的幫助!

與其在文件中有列表,不如將它包含在Hiera中,因為定義列表和其他外部數據是Hiera專門用於的。

(如果您尚未使用Hiera,則一定要仔細閱讀。)

因此,在希拉,您將擁有:

---
es_hosts:
- host1.domain.com 
- host2.domain.com 
- host3.domain.com 
- host4.domain.com

在清單中,您將使用hiera函數從Hiera中讀取該內容:

$es_hosts = hiera('es_hosts')

(請注意,我們通常使用Puppet的自動參數查找功能代替hiera函數,以將數據從Hiera讀取到清單中,但是您的要求-在多個上下文中使用的ES主機列表-建議您使用此列表不必綁定到特定的類輸入。如果現在這對您沒有意義,則您需要了解有關參數化類和自動參數查找的信息,但與該答案無關。)

最后,在您的ERB模板中,您將具有:

discovery.zen.ping.unicast.hosts: ["<%= @es_hosts.join('", "') %>"]

請注意,清單中的$es_hosts變量是通過ERB模板中的Ruby實例變量@es_hosts訪問的事實。

最后,請注意,這里的Puppet忘記可用的Elasticsearch Puppet模塊。 您可能會發現使用該模塊比編寫自己的模塊更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM