2014-09-21 175 views
3

我想創建一個組和用戶使用salt狀態文件,但我不知道組,gid,user,uid,sshkey,直到我需要執行我想作爲參數傳入的salt狀態文件。如何將參數傳遞給salt狀態文件?

我已閱讀有關Pillar創建變量。如何在執行前創建支柱?

/srv/salt/group.sls

{{ name }}: 
    group.present: 
    - gid: {{ gid }} 
    - system: True 

命令行:

salt 'SaltStack-01' state.sls group name=awesome gid=123456 

回答

1

您使用支柱,打造 「字典」,你可以參考納入國家文件。我不知道如果我正確認識你,但這裏是你可以做什麼的例子:

  1. mkdir /srv/pillar/

  2. 創建/srv/pillar/groups.sls和粘貼這樣的事情了進去:

    groups: 
        first: 1234 
        second: 5678 
    

    這些是您要創建的組的名稱和GID。

  3. 創建/srv/pillar/top.sls所以你可以將這個支柱應用到你的爪牙。這非常類似於鹽頂部的文件,這樣你就可以將其應用到所有的爪牙('*')或只是一個('SaltStack-01'):

    base: 
        'hc01*': 
        - groups 
    

    要測試已經工作,可以運行salt '*' pillar.items和你應該在輸出中找到groups支柱。現在

  4. ,你/srv/salt/group.sls文件應該是這樣的:

    {% for group,gid in pillar.get('groups',{}).items() %} 
    {{ group }}: 
        group.present: 
        - gid: {{ gid }} 
    {% endfor %} 
    

    這是一個循環:forgroupgid在支柱groups,做休息。所以基本上,你可以把它看作如果狀態文件運行兩次:

    first: 
        group.present: 
        - gid: 1234 
    

    然後:

    second: 
        group.present: 
        - gid: 5678 
    

這是從this guide中。

0

,如果你不想使用Pillar
你可以做:

# /srv/salt/params.yaml 

name: awesome 
gid: 123456 

然後:

# /srv/salt/groups.sls 

{% import_yaml "params.yaml" as params %} 

{{ params['name'] }}: 
    group.present: 
    - gid: {{ parmas['gid'] }} 
    - system: True 

更多細節:doc

4

如果你真的想傳遞像你這樣的命令的數據也可以這樣做:

{{ pillar['name'] }}: 
    group.present: 
    - gid: {{ pillar['gid'] }} 
    - system: True 

然後在命令行中,你可以通過在這樣的數據:

salt 'SaltStack-01' state.sls group pillar='{"name": "awesome", "gid": "123456"}' 
+0

這是我一直在尋找,當我許多年前問這個問題的答案。接受的答案可能是最佳做法。謝謝戴夫! – 2017-07-12 13:46:36