saltstack jobs管理

瞎折騰時,執行了state.highstate時,出現錯誤,手抖就ctrl + c,就導致線上minion裏關閉但未啓動(這是和我線上SLS有關),然而剛剛的同步操作仍在minion上執行。

類似下面這樣
localhost:
    Data failed to compile:
----------
    The function "state.highstate" is running as PID 3799 and was started at 2013, Apr 10 16:54:19.200123


然而現在想執行一個state.sls,可是有個job正在執行導致無法執行,這麼辦呢。?是否有像kill功能殺掉它。。?


有,在salt 0.9.7版本就引入了jobs管理功能,利用此功能可以管理線上所有jobs,同時也能審計。
對master發出去的jobs,把job id、執行函數、返回結果統統入庫,這樣可以對發出去的jobs做審計(事後型)。目前線上沒使用,是我理想的狀態;
上述這個入庫可以參考偉哥文章:http://wiki.saltstack.cn/reproduction/salt-returners-fluent-mysql


迴歸正題,想要殺掉這個進程,咱得知道運行的job還在哪些機器上運行,job id號是多少。
利用salt-run jobs.active,可以看到當前正在運行的所有jobs
#salt-run jobs.active
'20140211102239075243':
     //job id
  Arguments: []
  Function: state.highstate
  Returned:
  - 1
  - 03
  - 02
  - 4
  - 5
                                         //正在運行jobs的minion
  - 3
  - 7
  - 1
  - 2
  - jid
  Running: []
  Target: '*'
  Target-type: glob
  User: root


知道job id,我們就可以查看這個job具體執行內容,利用salt-run jobs.lookup_id 20140211102239075243,這裏信息太多我就不貼了
要想kill掉這個進程,需要使用saltutil模塊的函數。
kill有兩個方式,一個野蠻(kill_job),一個溫柔(term_job),對待saltstack如同女人嘛,我就溫柔點。。
#salt '*' saltutil.signal_job 20140211102239075243 15


更多內容,請查看下面兩個鏈接,官方最實在,- -  
寫的不是很好 - -,希望對大家有幫助


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章