理解saltstack 裏cmd.run 配合onlyif和unless使用

自己琢磨的好幾天就是光看資料,還是沒琢磨明白,建議大家一定 要親自動手在機器上測試下。
我們以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下的這條語句就不執行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章