saltstack学习笔记9-JOB
saltstack里面执行任何一个操作都会在master上产生一个jid号,就像上一节存储到redis上的数据显示的一样./redis-cli monitor
OK
1461054358.412376 "SELECT" "0"
1461054358.412717 "SET" "minion1:20160419162558137768" "{\"fun_args\": [\"hostname\"], \"jid\": \"20160419162558137768\", \"return\": \"minion1\", \"retcode\": 0, \"success\": true, \"fun\": \"cmd.run\", \"id\": \"minion1\"}"
1461054358.413143 "LPUSH" "minion1:cmd.run" "20160419162558137768"
1461054358.413482 "SADD" "minions" "minion1"
1461054358.413791 "SADD" "jids" "20160419162558137768"
1461058032.241332 "SELECT" "0"
1461058032.241541 "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 "LPUSH" "minion1:cmd.run" "20160419172712073319"
1461058032.242815 "SADD" "minions" "minion1"
1461058032.243637 "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
页:
[1]