1.include的使用
需求场景:用于含有多个SLS的状态,使用include可以进行多个状态的组合
用法:
include:
- base
- emacs
注意:include本身作为一个顶级声明,不允许在一个文件中出现多次
2.extend的使用
扩展某个SLS的状态可以使用extend实现
用法:
include:
- database.mysql.init
- web.apache.init
extend:
apache-install:
pkg.installed:
- name: wget
3.require与require_in的使用
- require:我依赖谁
- require_in:我被谁依赖
- 如果所依赖的id段没有执行成功,则require所在的id段不执行指令
用法
apache-server:
service.running:
- name: httpd
- enable: True
- require:
- pkg: apache-install
4.watch与watch_in的使用
监控某个文件是否改变,如果改变则执行某个指令
用法:
[root@node01 base]# vim web/apache/init.sls
apache-install:
pkg.installed:
- name: httpd
/etc/httpd/conf/httpd.conf:
file.managed:
- source: salt:
apache-server:
service.running:
- name: httpd
- enable: True
- reload: True
- require:
- pkg: apache-install
- watch:
- file: /etc/httpd/conf/httpd.conf
5.unless的使用
状态间的条件判断,如果判断成功则不执行所在id的指令,判断失败则执行
用法:
[root@node01 base]# vim test.sls
this_test:
cmd.run:
- name: hostname
- unless: test -f /root/abc
6.template的使用
使用jinja模板定义变量
用法:
[root@node01 base]# cat test.sls
/opt/test:
file.managed:
- source: salt:
- template: jinja
- defaults:
DNS: 114.114.114.114
[root@node01 base]# cat file/test
nameserver: {{ DNS }}
[root@node02 ~]# cat /opt/test
nameserver: 114.114.114.114
|