STATES ORDERING AND PROVIDERS

ORDERING STATES

states文件的執行順序,能夠按照默認原則執行順序,或着自定義執行順序。linux


STATE AUTO ORDERING

state_auto_order這個選項能夠按照sls文件中定義的順序進行評估,包括top文件
order選項將覆蓋定義好的states狀態順序,默認state_auto_order設置爲True。vim


REQUISITE STATEMENTS

通常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
View Code

示例中定義了一個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
View Code

在示例中若是httpd和network不能同時被成功執行,那麼service就不會被執行
注意:Requisite的匹配要求,能夠匹配name或狀態ID,若是name爲一個列表參數,不能指定其中一個包做爲依賴blog


MULTIPLE REQUISITES

多重的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: []
View Code

示例中設置爲僅當pkg,user,group同時執行成功才啓動httpd服務


REQUISITE DOCUMENTATION

THE ORDER OPTION

require定義的依賴關係將覆蓋設置的order選項
示例:

1 vim:
2   pkg.installed:
3     - order: 1
View Code

示例中設置的order選項將確保pkg在第一順序被執行,對於沒有order的state將在後面被執行

設置state最後執行

1 vim:
2   pkg.installed:
3     - order: last
View Code

-------------------------------------------------------------------------------------------------------------------------------------------

STATE PROVIDERS

PROVIDERS模塊的使用,譬如在一箇舊版本的linux中,當沒法使用systemd的時候能夠利用PROVIDERS模塊來指定salt只用指定的模塊運行
示例:

1 httpd:
2   service.running:
3     - enable: True
4     - provider: service
View Code

這時設置provider只適用於指定的state,若是想在minion端被全局使用能夠在minion config中配置,且provider僅適用虛擬模塊


 

ARBITRARY MODULE REDIRECTS

可以使用指定的自定義模塊執行函數,而不單單是重寫或擴展一個虛擬模塊,這意味着你能夠對provider定義類型
示例:

1 emacs:
2   pkg.installed:
3     - provider:
4       - cmd: customcmd
View Code

示例中爲安裝軟件包提供了極大地靈活執行方式。

------------------------------------------------------------------------------------------------------------------------------------------------------------------

相關文章
相關標籤/搜索