2014-04-18 31 views
0

我正在使用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 }}一些變化,但不成功。除非在函數中使用支柱變量的簡單方法,否則我正在考慮提出功能請求並在一天內調用它。

回答

1

我認爲解決這個問題的方法是使用神社,並有包含DNS服務器的列表...柱旁變量填充的變量

例如,你可以有一個支柱:綁定:服務器變量 看到http://docs.saltstack.com/en/latest/topics/tutorials/states_pt3.htmlhttp://docs.saltstack.com/en/latest/topics/pillar/index.html#master-config-in-pillar可以用於兩種設置的resolv.conf的域名服務器

..但也給加 - BIND9狀態的服務器。 所以最後你只有一個地方可以編輯:支柱綁定服務器的服務器列表

+0

這看起來好像會啓用我想要實現的功能(代價是相當黑客和移動重要的信息支柱),但我不能根據OP中的編輯在'pillar.get'函數中使用變量。 – user2640621

+0

{salt for country ['pillar.get']('servers:{{server_id}}')%} – nthiebaud

相關問題