自己琢磨的好幾天就是光看資料,還是沒琢磨明白,建議大家一定 要親自動手在機器上測試下。
我們以saltstack管理tomcat啓動與重啓爲例子:
master主機上目錄結構如下
[root@syl salt]# pwd
/srv/salt
[root@syl 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下的這條語句就不執行。