gbless 发表于 2015-11-26 12:16:51

Saltstack:Crontab部署


salt.states.cron
work with cron
  1.   top文件(top.sls)

base:
'test_mysql_04.ztt':
   - crontab
  2.   crontab文件(init.sls)

date > /tmp/crontest:
cron.present:
- identifier: Reno_crontest
- comment: Salt_crontest
   - user: root
- minute: 7
- hour: 5
  3.   推送crontab内容,Example:

salt 'test_mysql_04.ztt' state.highstate
  
http://blog.csdn.net/pengtaolei/article/details/


  4.    更新指定identifier的crontab任务,Example:
  Init.sls内容:

date > /tmp/crontest:
cron.present:
- identifier: Reno_crontest
- comment: Salt_crontest
   - user: root
- minute: 7
- hour: 5
- daymonth: 20
  推送:

salt 'test_mysql_04.ztt' state.highstate
  
http://blog.csdn.net/pengtaolei/article/details/


  5.    最后,时间参数(例如:minute,hour等)可以随机化,使用random代替具体的时间值,如下sls文件:

date > /tmp/crontest:
cron.present:
    - identifier: Reno_crontest3
    - comment: Salt_crontest
    - user: root
    - minute: random
    - hour: 5
    - daymonth: 20
  推送更新后cron信息,如下:
  
http://blog.csdn.net/pengtaolei/article/details/


  6.    可以使用name参数定义cron任务的命令信息,Example:

cron_jobs:
cron.present:
    - name: date > /tmp/crontest
    - identifier: Reno_crontest
    - comment: Salt_crontest
    - user: root
    - minute: random
    - hour: 2
    - daymonth: 20
  
  在蛮久以前(2014.2),当对一个存在的cron任务做修改,yaml的name定义是任务的唯一标示,因此如果存在一个cron任务如下:

date > /tmp/crontest:
cron.present:
   - user: root
   - minute: 5
  变成这样:

date > /tmp/crontest:
cron.present:
    - user: root
    - minute: 7
    - hour: 2
  那么这个cron任务就会被更新;但是如果name定义(cron command)改变了,则会增加一个新的cron任务。
  
  庆幸的是,我们可以依赖一个参数-identifier作为唯一标示,例如如下一个cron任务:

date > /tmp/crontest:
cron.present:
    - identifier: Reno_crontest
    - user: root
    - minute: 7
    - hour: 2
  在2014的版本中,新增加了daymonth参数的cron任务:

date > /tmp/crontest:
cron.present:
    - identifier: Reno_crontest
    - user: root
    - minute: 7
    - hour: 2
    - daymonth: 20
  或者修改name定义(cron command):

superscript > /tmp/crontest:
cron.present:
    - identifier: Reno_crontest
    - user: root
    - minute: 7
    - hour: 2
    - daymonth: 20
  那么,只会更新cron任务,因为identifier相同。

cron.absent(name, user=’root’, identifier=None,**kwargs)
确认对指定的user移除指定的cron job;只有name匹配才会移除cron job。
name
要移除user crontab的命令
user
需要修改(移除)crontab的user,默认是root
identifier
跟踪cron job的用户自定义identifier,默认是state的id
g.e
mycron/init.sls

del_cron_jobs:
cron.absent:
    - name: /usr/local/bin/dump_backup.sh> /tmp/dump_backup.log2>&1
    - user: mysql
    - identifier: xtra_drcmeta_bak
执行结果:
http://blog.csdn.net/pengtaolei/article/details/





cron.present(name, user='root', minute='*', hour='*', daymonth='*', month='*',dayweek='*', comment=None, identifier=None)
g.e
mycron/init.sls

xtra_backup_cronjob:
cron.present:
    - name: /usr/local/bin/xtra_backup.sh> /tmp/xtra_backup.log2>&1
    - identifier: xtra_backup
    - comment: xtrabackup bakcup files
    - user: mysql
    - minute: 0
    - hour: 2
    - dayweek: '1,2,4,5,7'
    - require:
      - file: xtra_backup.sh

drcmeta_backup_cronjob:
cron.present:
    - name: /usr/local/bin/drcmeta_bak.sh> /tmp/drcmeta_bak.log2>&1
    - identifier: xtra_drcmeta_bak
    - comment: xtrabackup drcmeta backup
    - user: mysql
    - minute: 0
    - hour: '*/6'
    - require:
      - file: drcmeta_bak.sh



参考:http://docs.saltstack.com/en/latest/ref/states/all/salt.states.cron.html#salt.states.cron.present
页: [1]
查看完整版本: Saltstack:Crontab部署