理解saltstack 里cmd.run 配合onlyif和unless使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解saltstack 里cmd.run 配合onlyif和unless使用相关的知识,希望对你有一定的参考价值。
自己琢磨的好几天就是光看资料,还是没琢磨明白,建议大家一定 要亲自动手在机器上测试下。
我们以saltstack管理tomcat启动与重启为例子:
master主机上目录结构如下
[[email protected] salt]# pwd
/srv/salt
[[email protected] salt]# tree
.
├── app
│?? ├── files
│?? │?? └── server.xml
│?? └── tomcat.sls
└── prod
├── services
└── states
5 directories, 2 files
tomcat.sls状态文件如下
tomcat-config-copy:
file.managed:
- name: /usr/local/tomcat/conf/server.xml
- source: salt://app/files/server.xml
- user: root
- group: root
- mode: 755
- template: jinja
- defualts:
PORT: 8081
tomcat-service-restart:
cmd.run:
- name: netstat -nltp|grep 8081|awk -F ‘ ‘ ‘{print $7}‘|awk -F ‘/‘ ‘{print $1}‘|xargs kill -9 && /usr/local/tomcat/bin/startup.sh
#onlyif表示只要我下面的条件为真(True),则上面cmd.run的这条命令就执行,如果onlyif下面的执行语句为假(false),则cmd.run的这条命令就不执行
- onlyif: curl http://47.100.24.206:8081/ #onlyif这里用test -e /usr/local/tomcat/conf/server.xml测试这个文件是否存在也是可以
#而把onlyif换成unless则正好相反,换成unless之后,unless下面的执行语句如果执行成功返回为真(True),则cmd.run下的这条语句就不执行。
以上是关于理解saltstack 里cmd.run 配合onlyif和unless使用的主要内容,如果未能解决你的问题,请参考以下文章