[英]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.