states文件的執行順序,能夠按照默認原則執行順序,或着自定義執行順序。linux
state_auto_order這個選項能夠按照sls文件中定義的順序進行評估,包括top文件
order選項將覆蓋定義好的states狀態順序,默認state_auto_order設置爲True。vim
通常states狀態都須要與其餘states狀態創建依賴關係,利用requisite語句來設置狀態之間的關係,通常有這3個語句被使用 require, watch, and prereq.ide
示例:函數
1 httpd: 2 pkg.installed: [] 3 file.managed: 4 - name: /etc/httpd/conf/httpd.conf 5 - source: salt://httpd/httpd.conf 6 - require: 7 - pkg: httpd
示例中定義了一個require關係,httpd.conf文件的同步依賴於httpd包安裝成功做爲依賴條件ui
Require statements能被定義在salt中任意的state,包括sls文件(以相似於連接文件的形式被引入),這確保在複雜的states的情況下能以正確的順序執行。spa
示例:code
1 include: 2 - network 3 4 httpd: 5 pkg.installed: [] 6 service.running: 7 - require: 8 - pkg: httpd 9 - sls: network
在示例中若是httpd和network不能同時被成功執行,那麼service就不會被執行
注意:Requisite的匹配要求,能夠匹配name或狀態ID,若是name爲一個列表參數,不能指定其中一個包做爲依賴blog
多重的require依賴定義cmd
示例:同步
1 httpd: 2 pkg.installed: [] 3 service.running: 4 - enable: True 5 - watch: 6 - file: /etc/httpd/conf/httpd.conf 7 - require: 8 - pkg: httpd 9 - user: httpd 10 - group: httpd 11 file.managed: 12 - name: /etc/httpd/conf/httpd.conf 13 - source: salt://httpd/httpd.conf 14 - require: 15 - pkg: httpd 16 user.present: [] 17 group.present: []
示例中設置爲僅當pkg,user,group同時執行成功才啓動httpd服務
THE ORDER OPTION
require定義的依賴關係將覆蓋設置的order選項
示例:
1 vim: 2 pkg.installed: 3 - order: 1
示例中設置的order選項將確保pkg在第一順序被執行,對於沒有order的state將在後面被執行
設置state最後執行
1 vim: 2 pkg.installed: 3 - order: last
-------------------------------------------------------------------------------------------------------------------------------------------
PROVIDERS模塊的使用,譬如在一箇舊版本的linux中,當沒法使用systemd的時候能夠利用PROVIDERS模塊來指定salt只用指定的模塊運行
示例:
1 httpd: 2 service.running: 3 - enable: True 4 - provider: service
這時設置provider只適用於指定的state,若是想在minion端被全局使用能夠在minion config中配置,且provider僅適用虛擬模塊
可以使用指定的自定義模塊執行函數,而不單單是重寫或擴展一個虛擬模塊,這意味着你能夠對provider定義類型
示例:
1 emacs: 2 pkg.installed: 3 - provider: 4 - cmd: customcmd
示例中爲安裝軟件包提供了極大地靈活執行方式。
------------------------------------------------------------------------------------------------------------------------------------------------------------------