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    #使用jinja模板
    - default:           #定义默认值
      ID: {{ grains['ipv4'] [1] }}
    - require:
      - pkg: salt-minion-install

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值