用于管理定时任务(crontab 来操作)

参数

  • backup: 对远程主机上的原计划内容修改之前做备份
  • cront_file: 如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户计划任务
  • day: 日(1-31,,/2,……)
  • hour: 小时(0-23,,/2,……)
  • minute: 分钟(0-59,,/2,……)
  • mouth: 月(1-12,,/2,……)
  • weekday: 周(0-7,*,……)
  • job: 要执行的任务,依赖于state=present
  • name: 该任务的描述,必选项。
  • special_time:指定什么时候执行(被触发),参数:reboot,yearly,annually,monthly,weekly,daily,hourly。
  • state:确认该任务计划是创建还是删除 Present(启用) | Absent(停用)
  • user:以哪个用户的身份执行

例子

添加一条定时任务, 3 1 2 echo hello
ansible test -m cron -a “hour=3 month=2 day=1 job=’echo hello’ name=’test’ state=present “ -k

删除name为test的计划任务
ansible test -m cron -a ‘name=test state=absent’ -k

添加一个定时任务,每天晚上凌晨三点系统备份脚本
ansible all -m cron -a “job=’/data/scripts/system_backup.sh’ minute=00 hour=03 state=present name=’system backup’”

/data/scripts/system_backup.sh

  1. #/bin/bash
  2. #备份策略:每天进行一次全量备份,本地保留备份7天
  3. #如需备份系统其他路径,请在变量BACKUP_DIR新增一个路径,
  4. TIME=$(($RANDOM %1800+1))
  5. sleep $TIME
  6. . /etc/profile
  7. HOST=`hostname`
  8. DATE=`date +%F`
  9. IP=`ip a|grep inet|egrep -v "127.0.0.1|fe80|::"|awk -F'/' '{print $1}'|awk '{print $2}'|head -1`
  10. BACKUP_DIR="/etc/ /var/spool/cron/ /data/scripts/*.sh /home/*/.ssh/ /root/.ssh/ /boot/grub/grub.conf"
  11. mkdir -p /data/backup/$DATE/$IP-$HOST
  12. cd /data/backup/$DATE/$IP-$HOST
  13. tar -czf system.tar.gz $BACKUP_DIR --exclude=*.svn --exclude=*.git
  14. find /data/backup/ -maxdepth 1 -mtime +7|xargs rm -rf