按照,最实用优先原则,优先贴出官方对参数的介绍涉及页面:
全局failhard参数的介绍: https://docs.saltstack.com/en/latest/ref/states/failhard.html
sls相互依赖或相互连接的各大参数: https://docs.saltstack.com/en/latest/ref/states/requisites.html#requisites
failhard参数介绍:
实际环境中,我们会有中断需求,当一个state出现异常,我们不希望与之有关的state开始执行,甚至在它后面的state也终止执行;而failhard可以满足我们的需求
用法:可以在master的配置文件中配置全局的stats都有此效果,后者在某一个stat里面的某个模块下监控,或者监控整一个state的状态。
例子:
第一种:
wget:
pkg.installed:
- name: wget
yi:
cmd.run:
- name: echo aaa
- cwd: /
file.managed:
- names:
- /root/heheda.txt:
- source: /root/sha
- /root/passwd.txt:
- source: /root/shadow
- failhard: True
er:
cmd.run:
- name: echo "a='/root/a.txt'";
- cwd: /
san:
cmd.run:
- name: echo "heheda"
- cwd: /
解释:在yi的state中file模块里有failhard,这就表示,只要全局没有配置这个failhard,那么当这里的文件复制中其中一个文件复制失败,那么er和san的state就不会被执行
第二种:
wget:
pkg.installed:
- name: wget
yi:
cmd.run:
- name: echo aaa
- cwd: /
- failhard: True
file.managed:
- names:
- /root/heheda.txt:
- source: /root/sha
- /root/passwd.txt:
- source: /root/shadow
er:
cmd.run:
- name: echo "a='/root/a.txt'";
- cwd: /
san:
cmd.run:
- name: echo "heheda"
- cwd: /
解释:在yi的state中file模块里有failhard,这就表示,只要全局没有配置这个failhard,那么当这里的文件复制中其中一个文件复制失败,只要yi中的cmd模块中的run运行正常,则会继续执行er和san的stat内容
onchanges参数介绍:
实际环境中,我们会有某个stat执行需要一个前置条件或所有前置条件能执行成功,否则它就不能被执行,这个参数就是用来检查之前的state是否被执行成功的
用法:就是在某个需要前置state的state下放上这个参数就可以了
具体用法如下:
wget:
pkg.installed:
- name: wget
yi:
cmd.run:
- name: echo aaa
- cwd: /
file.managed:
- names:
- /root/heheda.txt
- source:/root/sha
er:
cmd.run:
- name: echo "a='/root/a.txt'";
- cwd: /
san:
cmd.run:
- name: echo "heheda"
- cwd: /
- onchanges:
- cmd: yi
- cmd: er
- file: yi
解释:想要执行san这个state,则必须要把yi中的cmd还有file执行成功;还有er中的cmd也要执行成功;
值的注意的是,这个onchanges只监控一个job的result结果,file的监控最好直接指向某个文件会比较准备,否则如果是操作多个文件则会存在异常问题。
- file: yi可以改写成 - file: /root/heheda.txt
这里的内容也很不错,建议自己看吧: