1、引言:html
在平常的運維工做中常常會遇到須要定時定點啓動任務,首先會考慮到crontab,可是經過crontab的話須要每臺機器下進行設置,這樣統一管理的話比較複雜;經過查百度和google發現saltstack有scheduler的功能。運維
2、Pillar Scheduler:google
Salt自己提供多方面的Scheduler的配置,分別有3種配置方式:spa
一、從Master配置端;code
二、Master Pillar端;htm
三、Minion配置端或者Minion.d下配置文件下配置blog
在這裏介紹的是pillar的方式;官方文檔:https://docs.saltstack.com/en/latest/topics/jobs/index.htmlcrontab
首先建立一個/srv/salt/pillar/top.sls文檔
[root@test pillar]# cat /srv/salt/pillar/top.sls base: "*": - schedule
而後建立/srv/salt/pillar/schedule.slsget
[root@test tmp]# cat /srv/salt/pillar/schedule.sls schedule: testcase: function: cmd.run seconds: 10 args: - 'date >> /tmp/test.cmd.log' kwargs: stateful: False
備註:這個調度任務的意思是:每隔10秒在/tmp目錄下的test.cmd.log文件中記錄一條時間。
建立完文件以後執行下面的命令把pillar的修改刷到minion端。
salt "*" saltutil.refresh_pillar
想查看minion端都有哪些計劃任務能夠用:
[root@test pillar]# salt "*" pillar.get schedule 192.168.1.88: ---------- __mine_interval: ---------- function: mine.update jid_include: True maxrunning: 2 minutes: 60 name: __mine_interval testcase: ---------- args: - date >> /tmp/test.cmd.log function: cmd.run jid_include: True kwargs: ---------- stateful: False maxrunning: 1 name: testcase seconds: 10
或者:
[root@test pillar]# salt "*" config.option schedule 192.168.1.88: ---------- __mine_interval: ---------- function: mine.update jid_include: True maxrunning: 2 minutes: 60 name: __mine_interval
config.option的方式只能出mine.update的。
3、運行結果:
[root@test pillar]# tail -f /tmp/test.cmd.log Tue Mar 21 14:26:58 CST 2017 Tue Mar 21 14:27:08 CST 2017 Tue Mar 21 14:27:18 CST 2017 Tue Mar 21 14:27:28 CST 2017 Tue Mar 21 14:27:38 CST 2017 Tue Mar 21 14:27:48 CST 2017 Tue Mar 21 14:27:58 CST 2017 Tue Mar 21 14:28:08 CST 2017 Tue Mar 21 14:28:18 CST 2017 Tue Mar 21 14:28:28 CST 2017