salt job管理和定时任务


job management
salt在job任务上的管理


使用saltutil模块进行任务管理
1、running 返回在 proc 目录下找到的所有正在运行的任务.
示例:
ll /var/cache/salt/minion/proc/
-rw-r--r-- 1 root root 109 Aug 24 21:28 20170824212833356710

2、find_job 返回指定任务ID的详细数据.
salt '10.XX.X.19' saltutil.find_job 20170824213949924876

 1 10.88.4.19:
 2 ----------
 3 arg:
 4 - sleep 50;echo 1
 5 fun:
 6 cmd.run
 7 jid:
 8 20170824213949924876
 9 pid:
10 32584
11 ret:
12 tgt:
13 10.88.4.19
14 tgt_type:
15 glob
16 user:
17 root
View Code

3、signal_job 允许给指定任务ID发送一个信号.

4、term_job 发送termination信号(SIGTERM, 15)给指定的任务.

5、kill_job 发送kill信号(SIGKILL, 9)给指定的任务.

这是一个非常好的问题,也是平时容易遇到的一个问题,关于调用脚本执行出现问题的时候
需要kill的情况,父子进程彻底kill掉
http://www.huangdc.com/66
https://my.oschina.net/dchuang/blog/489664

这些方法是提供了在minion级别管理任务的核心.



使用salt-run进行任务管理,在master端执行命令

salt-run jobs.active
#查询当前所有在minion端正在执行的任务,相当于在所有机器上运行saltutil.running

salt-run jobs.lookup_jid

#由于master默认设置可以保留24小时的jobs的结果信息,所以可以查询到最近执行过的任务
历史结果

示例,当我们执行一个远程命令的时候,这时ctrl+c中断一下,会反馈以下信息:

Exiting gracefully on Ctrl-c
This job's jid is: 20170828224834520835
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 the following command:

salt-run jobs.lookup_jid 20170828224834520835

提示我们使用salt-run命令查看返回数据情况。

salt-run jobs.list_jobs
#列出最近缓存的任务结果,很多都是系统内部通信的任务


SaltStack通过Schedule实现批量的计划任务和管理,主要任务定期执行配置同步、执行命令等等。
可以在master端和minion端配置schedule


在master的pillar环境目录中设置定时任务
示例:
more top.sls
abc:
'10.64.1.127':
- schedule #导入的模块名

more schedule.sls
schedule:
log-loadavg: #任务名
function: cmd.run #函数
seconds: 3 #时间间隔
args:
- 'echo "1" >> /opt/a'
kwargs:
stateful: False
shell: /bin/sh

salt "10.XX.1.127" saltutil.refresh_pillar
#将任务推送到minion

#salt "10.XX.1.127" pillar.get schedule
查询minion端有哪些定时任务

如果要删除在pillar上设置的定时任务,则需要在删除定时任务的配置并
使用saltutil.refresh_pillar更新,收集到的信息可以放入数据库里面。


minion端系统定时任务示例:


在/etc/salt/minion.d/目录下游一个_schedule.conf文件,这个是minion端默认配置的一个定时任务,用于更新mine信息,内容如下:

schedule:

__master_alive:
function: status.master
jid_include: true
kwargs: {connected: true, master: 10.70.38.29}
maxrunning: 1
seconds: 30

__mine_interval: {function: mine.update, jid_include: true, maxrunning: 2, minutes: 60}

定时执行,周期性的将数据发送到saltmaster端。




原文地址:https://www.cnblogs.com/solitarywares/p/7425942.html