理解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下的这条语句就不执行。

原文地址:http://blog.51cto.com/song1230/2343579

时间: 2024-10-30 14:57:13

理解saltstack 里cmd.run 配合onlyif和unless使用的相关文章

saltstack使用cmd.run批量更改ntp统一时间

[[email protected] salt]# salt-key  Accepted Keys: hddcluster1 hddcluster2 hddcluster3 hddcluster4 salt-master salt-minion01 Denied Keys: Unaccepted Keys: Rejected Keys: 查看操作系统版本以及版本号 [[email protected] salt]# salt '*' grains.item  os osrelease  salt

python多进程的理解 multiprocessing Process join run

最近看了下多进程. 一种接近底层的实现方法是使用 os.fork()方法,fork出子进程.但是这样做事有局限性的.比如windows的os模块里面没有 fork() 方法. windows:.linux: 另外还有一个模块:subprocess.这个没整过,但从vamei的博客里看到说也同样有局限性. 所以直接说主角吧 --- multiprocessing模块. multiprocessing模块会在windows上时模拟出fork的效果,可以实现跨平台,所以大多数都使用multiproce

mine结合cmd.run自定义收集系统信息

mine这个模块好像官网没说具体能实现什么功能,具体的就是数据可以再客户端实时的按照我们的要求去刷新,这样是不是满足我们去监控客户端状态的要求呢,前面提到了grains是要重启salt-minion才能生效的. 开始去实现: 1.服务端操作: [[email protected] python]# cd /etc/salt/minion.d/ [email protected] minion.d]# cat mine.conf mine_functions:        #调用mine函数 

[python]如何理解uiautomator里面的 child, child_by_text, sibling,及使用场景

如何理解uiautomator里面的 child, child_by_text, sibling,我们借助android原生的uiautomatorviewer抓取的控件来进行理解 以如下图进行详细讲解(左边与右边的通过不同颜色进行圈起来,表示了这些控件的归属关系),例如红圈部分为一个父类,投影绿圈和黄圈均为它的子类(称为child),而绿圈和黄圈属于同级别关系,则可以理解为兄弟关系(称为sibling) 比如要点击"Navigation bar hide"的开关进行打开或者关闭,则代

该如何理解AMD ,CMD,CommonJS规范--javascript模块化加载学习总结

是一篇关于javascript模块化AMD,CMD,CommonJS的学习总结,作为记录也给同样对三种方式有疑问的童鞋们,有不对或者偏差之处,望各位大神指出,不胜感激. 本篇默认读者大概知道require,seajs的用法(AMD,CMD用法),所以没有加入使用语法. 1.为何而生: 这三个规范都是为javascript模块化加载而生的,都是在用到或者预计要用到某些模块时候加载该模块,使得大量的系统巨大的庞杂的代码得以很好的组织和管理.模块化使得我们在使用和管理代码的时候不那么混乱,而且也方便了

windows里CMD对%0的扩充

经常在批处理里看见%~dp0,似乎不好理解. 其实是%0,然后用~放在%和0之间,加些定义字段进行扩展. echo %0echo %~0 这个做成一个bat文件,执行 E:\temp>echo "E:\temp\shenxu.bat""E:\temp\shenxu.bat" E:\temp>echo E:\temp\shenxu.batE:\temp\shenxu.bat %~0    就是删除双引号" %~f0    显示完整的目录文件 E:

我这样理解js里的this

关于this,是很多前端面试必考的题目,有时候在网上看到这些题目,自己试了一下,额,还真的错了!在实际开发中,也会遇到 this 的问题(虽然一些类库会帮我们处理),例如在使用一些框架的时候,例如:knockout,有时候不明白为什么不直接使用this,而要把 this 作为参数传入. 接下来你谈谈我对它的理解,也作为一个笔记,方便以后参阅.有不对的地方,欢迎指出批评. 1. 不像C#,this一定是指向当前对象.js的this指向是不确定的,也就是说是可以动态改变的.call/apply 就是

【转】彻底理解安卓里的ldpi、mdpi、hdpi、xhdpi、xxhdpi文件夹含义

这个问题我相信困惑了好多人包括很多老鸟,而且有的人以为自己理解其实是错误的,包括之前的我在内,在做安卓适配的时候,一般让美工做720*1280的切图,就直接放到xhdpi下,如果是做了1080*1920,就直接放到xxhdpi下. 其实这四个文件夹和具体的屏幕分辨率是没直接关系的,上面说的做法也有一定道理,因为大部分的720*1280的手机都是高密度手机,1080*1920都是超高密度手机,但是这四个文件夹之和屏幕密度有关,和具体分辨率无关. 下面给出一个最最关键的等式:low:medium:h

深入理解js里面的this

闲聊两句(可以忽略): 毕业有半年了,时间还过得真快,不过还好,感觉自己相对于刚毕业那会确实成长了很多:好久没有打游戏了(自己决心要戒掉的),消磨时光的时候就看看电影或者追追电视剧,再无聊就洗洗衣服.扫扫地,实在不行就拿起手边的书看.照我以前的习惯,我除了上课时间可能看书,其他的时间是完全看不进的,所以觉得这也是自己进步的地方. 最近自己想开始学习前端工程师现在最流行的东西,nodejs,听说可以写服务端.听说是事件驱动.听说...听说了很多很多关于它的好,所以我也决心要好好学这个.推荐我收集的