Ansible `cron` 模块

Ansible cron 模块

一、简介

  • 功能cron 模块用于在远程主机上管理定时任务(Cron Jobs)。它可以创建、修改、删除 Cron 任务,确保指定任务在预定时间自动执行。
  • 使用场景:常用于自动化配置系统任务调度,如定期备份、日志清理、系统监控等操作,确保这些任务在指定的时间周期内执行。

二、基本用法

2.1 语法

ansible <pattern> -m cron -a "name=<job_name> <cron_options>"
  • <pattern>:指定要操作的主机或主机组,例如 allwebservers
  • -m cron:指定使用 cron 模块。
  • name=<job_name>:指定 Cron 任务的名称(用于标识和管理任务)。
  • <cron_options>:指定任务的执行计划和具体操作(如命令、时间设置等)。

三、使用示例

3.1 创建一个 Cron 任务

ansible all -m cron -a "name='backup script' minute=0 hour=2 job='/usr/local/bin/backup.sh'"
  • 解释:在所有主机上创建一个名为 “backup script” 的 Cron 任务,设置为每天凌晨 2 点执行 /usr/local/bin/backup.sh 脚本。

3.2 删除一个 Cron 任务

ansible all -m cron -a "name='backup script' state=absent"
  • 解释:在所有主机上删除名为 “backup script” 的 Cron 任务。

3.3 创建一个任务,每 15 分钟执行一次

ansible all -m cron -a "name='log rotate' minute='*/15' job='/usr/sbin/logrotate'"
  • 解释:在所有主机上创建一个名为 “log rotate” 的任务,每 15 分钟执行一次 /usr/sbin/logrotate 命令。

3.4 创建一个每周一凌晨 3 点执行的任务

ansible all -m cron -a "name='weekly cleanup' minute=0 hour=3 day_of_week=1 job='/usr/local/bin/cleanup.sh'"
  • 解释:在所有主机上创建一个名为 “weekly cleanup” 的任务,每周一凌晨 3 点执行 /usr/local/bin/cleanup.sh 脚本。

3.5 创建一个 Cron 任务并指定用户

ansible all -m cron -a "name='check disk' minute=0 hour=1 user=root job='/usr/local/bin/check_disk.sh'"
  • 解释:在所有主机上以 root 用户的身份创建一个名为 “check disk” 的任务,每天凌晨 1 点执行 /usr/local/bin/check_disk.sh 脚本。

四、常用选项

4.1 minute, hour, day, month, day_of_week

  • 功能:设置 Cron 任务的时间安排。

    • minute:任务在每小时的第几分钟执行(0-59)。
    • hour:任务在每天的第几个小时执行(0-23)。
    • day:任务在每月的第几天执行(1-31)。
    • month:任务在每年的第几个月执行(1-12)。
    • day_of_week:任务在每周的第几天执行(0-7,0 和 7 表示星期日)。
  • 示例

    ansible all -m cron -a "name='daily task' minute=0 hour=0 job='/usr/local/bin/daily.sh'"
    
    • 解释:在所有主机上创建一个名为 “daily task” 的任务,每天午夜(00:00)执行 /usr/local/bin/daily.sh

4.2 job

  • 功能:指定要执行的命令或脚本。
  • 示例
    ansible all -m cron -a "name='system update' minute=30 hour=2 job='/usr/bin/yum update -y'"
    
    • 解释:在所有主机上创建一个名为 “system update” 的任务,每天凌晨 2:30 执行 yum update -y 命令。

4.3 state

  • 功能:控制 Cron 任务的状态。设置为 present 表示任务存在,absent 表示删除任务。
  • 示例
    ansible all -m cron -a "name='system update' state=absent"
    
    • 解释:在所有主机上删除名为 “system update” 的任务。

4.4 user

  • 功能:指定要在其下运行 Cron 任务的用户。默认情况下,任务在当前用户(通常是 root)下运行。
  • 示例
    ansible all -m cron -a "name='user backup' minute=0 hour=1 user=backup job='/home/backup/backup.sh'"
    
    • 解释:在所有主机上以 backup 用户的身份创建一个名为 “user backup” 的任务,每天凌晨 1 点执行 /home/backup/backup.sh 脚本。

4.5 cron_file

  • 功能:指定存放 Cron 任务的文件。默认情况下,任务会存储在 /etc/cron.d 或用户的 Cron 表中。
  • 示例
    ansible all -m cron -a "name='custom task' minute=15 hour=10 job='/usr/local/bin/task.sh' cron_file='custom_crontab'"
    
    • 解释:将 “custom task” 任务存放在 custom_crontab 文件中,每天上午 10:15 执行 /usr/local/bin/task.sh

五、注意事项

  • 时间设置:使用 minutehourdaymonthday_of_week 时,确保任务的执行时间符合预期。使用 * 作为通配符表示任意时间,如 minute='*/15' 表示每 15 分钟执行一次。
  • 任务冲突:在同一时间内安排多个任务时,确保它们不会相互冲突,尤其是涉及资源密集型操作时。
  • 用户权限:如果需要以特定用户身份运行任务,确保该用户有权限执行指定的命令或脚本,并使用 user 选项明确指定。
  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值