zoukankan      html  css  js  c++  java
  • 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
    View Code

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

    在示例中如果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: []
    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

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

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

  • 相关阅读:
    ZOJ 3332 Strange Country II
    ZOJ 3331 Process the Tasks(双塔DP)
    ZOJ 3326 An Awful Problem(模拟)
    HDU 1796 How many integers can you find(容斥原理)
    HDU 4059 The Boss on Mars(容斥原理)
    HDU 4135 Co-prime(容斥原理)
    HDU 5677 ztr loves substring(回文串加多重背包)
    CodeForces 668B Little Artem and Dance
    CodeForces 667A Pouring Rain
    Java实现 LeetCode 764 最大加号标志(暴力递推)
  • 原文地址:https://www.cnblogs.com/solitarywares/p/7629879.html
Copyright © 2011-2022 走看看