2017-10-17 135 views
0

我有一些主機/用戶名冊:狀態文件從名冊申請用戶名作爲變量,在鹽狀態

myhos1: 
    host: 192.168.1.1 
    user: foouser 

myhost2: 
    host: 192.168.1.2 
    user: bazuser 

現在我想使用的用戶名從名冊中做的事情,例如

Install VNC script: 
    file.managed: 
    - name: /home/<user>/test.sh 
    - source: salt://files/test.sh 
    - user: <user> 
    - group: <user> 

如何使用模板語言與我申請的狀態到主機的實際用戶ID來代替<user>

如果我能以某種方式直接從名冊中獲取信息,那會很好,但我沒有發現任何可以在相關文檔頁面中工作的東西。

回答

1

你有兩個我能想到的選項。

如果你還沒有很多用戶最簡單的辦法是使用神社

{% for user in ['foouser', 'bazuser'] %} 
/home/{{ user }}/test.sh: 
    file.managed: 
    - source: salt://files/test.sh 
    - user: {{ user }} 
    - group: {{ user }} 
{% endfor %} 

是隻遍歷一個列表或者你應該能夠做到像使用cmd.run得到用戶的列表:

{% for user in salt['cmd.run']('ls /home/').split('\n') %} 
    ... snipped 
{% endfor %} 

我已經測試了上述,它適用於我。

cmd.run in jinja - google salt-users forum

Useful reading if you're unsure about using Jinja with Salt

+0

感謝您的建議!理想情況下,我希望獲得用於連接到名單中的機器的單個用戶,但在此期間,您的第二種方法可能是一種有用的解決方法。 – centic

+0

@centic啊,對不起,我應該真的戴上眼鏡。您是否嘗試過使用支柱文件並循環播放內容?查看答案:https://stackoverflow.com/questions/27169509/saltstack-load-pillar-in-a-for-loop。我應該編輯我的問題來包含這一點 –