SaltStack状态间的关系模块

文章目录

1. include

以解耦的方式写了多个sls文件以后,可以用include模块来搭配sls状态文件,include模块通常放在文件顶部。

//语法
include:
  - file.sls    #sls文件路径,可以包含多个
  - file.sls
  ...

//例如
include:
  - modules.web.nginx.install
  - modules.database.mysql.install

2. extend

扩展某个SLS的状态

//语法
extend:
  id:          //指定需要扩展的id
  module:      //指定扩展使用的模块
    - name:    //参数

//例如
extend:
  nginx-install:          
    pkg.installed:         
      - name: openssl         

3. require与require_in

require:需要。依赖某个状态

require_in:被需要。被某个状态需要

如果所依赖的id没有执行成功,则require所在的id不会执行

//语法
- require:
  - module: id  

//例如
nginx:
  service.running:
    - enable:True
    - require:
      - file: /etc/nginx/nginx.conf  #表示nginx启动依赖这个配置文件

4. watch与watch_in

watch:监控某个状态
watch_in:被某个状态监控

//语法
- watch:
  - module:id

//例如
nginx-service:
  service.running:
    - reload: True
    - watch:     #表示监控id为/usr/local/nginx/conf/nginx.conf的file模块
      - file: /usr/local/nginx/conf/nginx.conf

5. unless

条件判断,如果判断条件成立则不执行所在id的指令,判断条件不成立则执行,常用于cmd模块下使用,因为cmd模块执行是不具有幂等性的,为了防止状态执行多遍,unless判断就非常有必要。

//语法
- unless: test ...

//例如
salt://modules/web/nginx/files/nginx_install.sh:
  cmd.script:
    - unless: test -d /usr/local/nginx    #表示如果这个目录存在则不行以上指令

6. template

定义变量

salt-minion-conf:
  file.managed:
    - name: /etc/salt/minion
    - source: salt://files/minion
    - user: root
    - group: root
    - mode: 644
    - template: jinja    #使用jinjia模板
    - default:           #定义默认值
      ID: {{ grains['ipv4'] [1] }}
    - require:
      - pkg: salt-minion-install

参考官方文档
https://docs.saltproject.io/en/latest/ref/states/requisites.html#require

上一篇:Redis事务


下一篇:computed & watch