STATES ORDERING AND PROVIDERS
ORDERING STATES
states文件的执行顺序,可以按照默认原则执行顺序,或着自定义执行顺序。
STATE AUTO ORDERING
state_auto_order这个选项可以按照sls文件中定义的顺序进行评估,包括top文件
order选项将覆盖定义好的states状态顺序,默认state_auto_order设置为True。
REQUISITE STATEMENTS
一般states状态都需要与其他states状态建立依赖关系,利用requisite语句来设置状态之间的关系,一般有这3个语句被使用 require, watch, and prereq.
示例:
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包安装成功作为依赖条件
Require statements能被定义在salt中任意的state,包括sls文件(以类似于链接文件的形式被引入),这确保在复杂的states的状况下能以正确的顺序执行。
示例:
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为一个列表参数,不能指定其中一个包作为依赖
MULTIPLE REQUISITES
多重的require依赖定义
示例:
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服务
REQUISITE DOCUMENTATION
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
-------------------------------------------------------------------------------------------------------------------------------------------
STATE PROVIDERS
PROVIDERS模块的使用,譬如在一个旧版本的linux中,当无法使用systemd的时候可以利用PROVIDERS模块来指定salt只用指定的模块运行
示例:
1 httpd: 2 service.running: 3 - enable: True 4 - provider: service
这时设置provider只适用于指定的state,如果想在minion端被全局使用可以在minion config中配置,且provider仅适用虚拟模块
ARBITRARY MODULE REDIRECTS
可使用指定的自定义模块执行函数,而不仅仅是重写或扩展一个虚拟模块,这意味着你可以对provider定义类型
示例:
1 emacs: 2 pkg.installed: 3 - provider: 4 - cmd: customcmd
示例中为安装软件包提供了极大地灵活执行方式。
------------------------------------------------------------------------------------------------------------------------------------------------------------------