標籤:saltstack
saltstack裡面執行任何一個操作都會在master上產生一個jid號,就像上一節儲存到redis上的資料顯示的一樣
./redis-cli monitor
OK
1461054358.412376 [0 127.0.0.1:58564] "SELECT" "0"
1461054358.412717 [0 127.0.0.1:58564] "SET" "minion1:20160419162558137768" "{\"fun_args\": [\"hostname\"], \"jid\": \"20160419162558137768\", \"return\": \"minion1\", \"retcode\": 0, \"success\": true, \"fun\": \"cmd.run\", \"id\": \"minion1\"}"
1461054358.413143 [0 127.0.0.1:58564] "LPUSH" "minion1:cmd.run" "20160419162558137768"
1461054358.413482 [0 127.0.0.1:58564] "SADD" "minions" "minion1"
1461054358.413791 [0 127.0.0.1:58564] "SADD" "jids" "20160419162558137768"
1461058032.241332 [0 127.0.0.1:58567] "SELECT" "0"
1461058032.241541 [0 127.0.0.1:58567] "SET" "minion1:20160419172712073319" "{\"fun_args\": [\"free -m\"], \"jid\": \"20160419172712073319\", \"return\": \" total used free shared buffers cached\\nMem: 988 826 162 0 41 545\\n-/+ buffers/cache: 239 749\\nSwap: 4095 0 4095\", \"retcode\": 0, \"success\": true, \"fun\": \"cmd.run\", \"id\": \"minion1\"}"
1461058032.242293 [0 127.0.0.1:58567] "LPUSH" "minion1:cmd.run" "20160419172712073319"
1461058032.242815 [0 127.0.0.1:58567] "SADD" "minions" "minion1"
1461058032.243637 [0 127.0.0.1:58567] "SADD" "jids" "20160419172712073319"
minion端會在cache目錄下的proc目錄建立一個以jid為名稱的檔案,這個檔案裡面的內容就是此次操作的記錄,當操作處理完成後該檔案會自動刪除。而master端會記錄每次操作的詳細資料,這個記錄都是存在master端cache目錄下jobs下。下面通過執行個體來瞭解日常job管理。
通過salt-run來管理job
salt-run -d|grep jobs
‘jobs.active:‘
Return a report on all actively running jobs from a job id centric
salt-run jobs.active
‘jobs.list_job:‘
salt-run jobs.list_job 20130916125524463507
‘jobs.list_jobs:‘
List all detectable jobs and associated functions
salt-run jobs.list_jobs
‘jobs.lookup_jid:‘
salt-run jobs.lookup_jid 20130916125524463507
salt-run jobs.lookup_jid 20130916125524463507 outputter=highstate
‘jobs.print_job:‘
salt-run jobs.print_job 20130916125524463507
這裡會顯示salt-run關於job操作的所有命令,關於每個參數的解釋大家可以通過salt-run -d jobs來查看
salt ‘minion1‘ cmd.run ‘sleep 100;whoami‘
^CExiting on Ctrl-C
This job‘s jid is:
20160419174043844662
The minions may not have all finished running and any remaining minions will return upon completion. To look up the return data for this job later run:
salt-run jobs.lookup_jid 20160419174043844662
等待時間過長這裡直接ctrl-C了,可以看到jid號
salt-run jobs.lookup_jid 20160419174043844662
查看這個job的詳細記錄
salt-run jobs.list_job 20160419174043844662
Arguments:
- sleep 100;whoami
Function:
cmd.run
Minions:
- minion1
Result:
----------
minion1:
----------
return:
root
StartTime:
2016, Apr 19 17:40:43.844662
Target:
minion1
Target-type:
glob
User:
root
jid:
20160419174043844662
通過saltstack module來管理job
上面已經介紹通過salt-run可以對日常job進行管理,為什麼要用module來管理job呢。salt-run對job管理功能比較局限,上面我們也看到了目前salt-run不支援kill某個job。現在我們就開始介紹使用saltstack內建的module來管理job
查看相關module的用法
salt ‘*‘ sys.doc saltutil|grep job
‘saltutil.find_cached_job:‘
Return the data for a specific cached job id
salt ‘*‘ saltutil.find_cached_job <job id>
‘saltutil.find_job:‘
Return the data for a specific job id
salt ‘*‘ saltutil.find_job <job id>
‘saltutil.kill_job:‘
Sends a kill signal (SIGKILL 9) to the named salt job‘s process
salt ‘*‘ saltutil.kill_job <job id>
salt ‘*‘ saltutil.runner jobs.list_jobs
‘saltutil.signal_job:‘
Sends a signal to the named salt job‘s process
salt ‘*‘ saltutil.signal_job <job id> 15
‘saltutil.term_job:‘
Sends a termination signal (SIGTERM 15) to the named salt job‘s process
salt ‘*‘ saltutil.term_job <job id>
我們繼續按照上面的例子來測試
salt ‘minion1‘ cmd.run ‘sleep 100;whoami‘
終止命令獲得jid
20160419175202067782
使用module來管理job
salt ‘minion1‘ saltutil.find_job 20160419175202067782
minion1:
----------
arg:
- sleep 100;whoami
fun:
cmd.run
jid:
20160419175202067782
pid:
25659
ret:
tgt:
minion1
tgt_type:
glob
user:
root
我們還可以直接kill掉這個job
salt ‘minion1‘ saltutil.kill_job 20160419175202067782
本文出自 “八英裡” 部落格,謝絕轉載!
saltstack學習筆記9-JOB