Izhuceul 发表于 2018-1-3 17:33:40

Saltstack之Scheduler

  一、引言:
  在日常的运维工作中经常会遇到需要定时定点启动任务,首先会考虑到crontab,但是通过crontab的话需要每台机器下进行设置,这样统一管理的话比较复杂;通过查百度和google发现saltstack有scheduler的功能。
  二、Pillar Scheduler:
  Salt本身提供多方面的Scheduler的配置,分别有3种配置方式:
  1、从Master配置端;
  2、Master Pillar端;
  3、Minion配置端或者Minion.d下配置文件下配置
  在这里介绍的是pillar的方式;官方文档:https://docs.saltstack.com/en/latest/topics/jobs/index.html
  首先创建一个/srv/salt/pillar/top.sls
  

# cat /srv/salt/pillar/top.sls  
base:
  "*":
  - schedule
  

  然后创建/srv/salt/pillar/schedule.sls
  

# 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端都有哪些计划任务可以用:
  

# 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
  

  或者:
  

# 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的。
  三、运行结果:
  

# 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
  
页: [1]
查看完整版本: Saltstack之Scheduler