我正在使用SaltStack來管理一些虛擬機。我正在尋找一種方法來呈現在top.sls文件中附加了指定的.sls或在啓用了jinja模板的文件中的特定狀態的小人物的ID /主機名。我想這樣做的原因是,我可以輕鬆地在客戶端配置中引用服務器,而無需在任何地方硬編碼值。例如;如何在SaltStack中呈現具有特定.sls或狀態的僕從的ID?
/srv/salt/top.sls:
base:
'desktoppc01':
- generic.dns
'bind9server01':
- generic.dns
- bind9
/srv/salt/generic/dns/init.sls:
/etc/resolv.conf:
file:
- managed
- source: salt://generic/dns/files/resolv.conf
- mode: 644
- template: jinja
最後,
/SRV/salt/generic/dns/files/resolv.conf:
domain {{ pillar['domain_name'] }}
search {{ pillar['domain_name'] }}
nameserver {{ list_minions_with_state['bind9'] }}
我特別後面的是{{ list_minions_with_state['bind9'] }}
(我剛剛爲示範而編造)。我認爲這將是相當普遍需要的東西,但在淘汰模塊頁面之後,我還沒有發現任何東西。
目前,我有客戶從支柱獲得信息,但這必須手動配置,這並不像時間花費的時間。
我希望我可以用for
循環擴展這個想法,以便服務器在創建時動態添加。
編輯:
用相同的數據&層次中top.sls文件,渲染
base:
{% for server_id in salt['pillar.get']('servers') %}
'{{ server_id }}':
{% for states in salt['pillar.get']('servers:{{ server_id }}') %}
- {{ states }}
{% endfor %}
{% endfor %}
給你
base:
'desktoppc01':
'bind9server01':
我試過{{ server_id }}
一些變化,但不成功。除非在函數中使用支柱變量的簡單方法,否則我正在考慮提出功能請求並在一天內調用它。
這看起來好像會啓用我想要實現的功能(代價是相當黑客和移動重要的信息支柱),但我不能根據OP中的編輯在'pillar.get'函數中使用變量。 – user2640621
{salt for country ['pillar.get']('servers:{{server_id}}')%} – nthiebaud