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

示例中为安装软件包提供了极大地灵活执行方式。

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

相关文章
相关标签/搜索