目录
[示例3:每周一早上 3 点清理临时文件](#示例3:每周一早上 3 点清理临时文件)
[Playbook (YAML 格式) 中管理定时任务。](#Playbook (YAML 格式) 中管理定时任务。)
[示例3:每周一早上 3 点清理临时文件](#示例3:每周一早上 3 点清理临时文件)
[完整的 Playbook 示例](#完整的 Playbook 示例)
cron
模块是 Ansible 用于管理定时任务的模块。通过 cron
模块,我们可以方便地创建、修改和删除 Unix 系统上的定时任务记录。默认情况下每个任务都会被添加到用户的 crontab 文件中,这些任务会在同一个文件里。Crontab 文件是以用户为单位管理的,每个用户都有自己的 crontab 文件。默认是 root 用户。
参数总结
-
name
:- 描述:cron 作业的名称。
- 类型:字符串
- 必需:是
-
minute
:- 描述:cron 作业的分钟部分。
- 类型:字符串
- 默认值:
*
-
hour
:- 描述:cron 作业的小时部分。
- 类型:字符串
- 默认值:
*
-
day
:- 描述:cron 作业的日部分。
- 类型:字符串
- 默认值:
*
-
month
:- 描述:cron 作业的月部分。
- 类型:字符串
- 默认值:
*
-
weekday
:- 描述:cron 作业的星期部分。
- 类型:字符串
- 默认值:
*
-
job
:- 描述:要执行的命令或脚本。
- 类型:字符串
- 必需:是
-
user
:- 描述:执行 cron 作业的用户。
- 类型:字符串
- 默认值:root
-
state
:- 描述:cron 作业的状态。
- 可选值:
present
(默认,确保作业存在)、absent
(确保作业不存在) - 类型:字符串
示例1:创建一个定时任务
添加一个每日凌晨 2 点运行的备份脚本任务:
ansible all -m cron -a "name='daily backup' minute='0' hour='2' job='/usr/local/bin/backup.sh'"
示例2:删除一个定时任务
删除名为 "daily backup" 的定时任务:
ansible all -m cron -a "name='daily backup' state='absent'"
示例3:每周一早上 3 点清理临时文件
添加一个每周一早上 3 点运行的临时文件清理任务:
ansible all -m cron -a "name='weekly temp files cleanup' minute='0' hour='3' weekday='1' job='/usr/bin/find /tmp -type f -atime +7 -delete'"
示例4:每小时运行一次日志轮转
添加一个每小时运行一次的日志轮转任务:
ansible all -m cron -a "name='hourly log rotation' minute='0' job='/usr/sbin/logrotate'"
示例5:为指定用户添加一个定时任务
为 username
用户添加一个每日凌晨 1 点运行的维护脚本任务:
ansible all -m cron -a "name='daily maintenance' minute='0' hour='1' job='/usr/local/bin/maintenance.sh' user='username'"
Playbook (YAML 格式) 中管理定时任务。
示例1:创建一个定时任务
下面的 Playbook 将在所有主机上添加一个每日凌晨 2 点运行备份脚本的任务:
---
- name: Setup cron job for daily backup
hosts: all
tasks:
- name: Add daily backup cron job
cron:
name: "daily backup"
minute: "0"
hour: "2"
job: "/usr/local/bin/backup.sh"
示例2:删除一个定时任务
下面的 Playbook 将在所有主机上删除名为 "daily backup" 的定时任务:
---
- name: Remove the daily backup cron job
hosts: all
tasks:
- name: Remove daily backup cron job
cron:
name: "daily backup"
state: absent
示例3:每周一早上 3 点清理临时文件
这个 Playbook 将在每周一早上 3 点清理临时文件:
---
- name: Setup cron job to clean temp files weekly
hosts: all
tasks:
- name: Add weekly temp files cleanup cron job
cron:
name: "weekly temp files cleanup"
minute: "0"
hour: "3"
weekday: "1" # 0 is Sunday, 1 is Monday, etc.
job: "/usr/bin/find /tmp -type f -atime +7 -delete"
示例4:每小时运行一次日志轮转
这个 Playbook 将在所有主机上添加每小时运行一次日志轮转的任务:
---
- name: Setup cron job for hourly log rotation
hosts: all
tasks:
- name: Add hourly log rotation cron job
cron:
name: "hourly log rotation"
minute: "0"
job: "/usr/sbin/logrotate"
示例5:为指定用户添加一个定时任务
这个 Playbook 将为特定用户添加一个每日凌晨 1 点运行的维护脚本任务:
---
- name: Setup cron job for user-specific task
hosts: all
tasks:
- name: Add daily maintenance job for specific user
cron:
name: "daily maintenance"
minute: "0"
hour: "1"
job: "/usr/local/bin/maintenance.sh"
user: "username"
完整的 Playbook 示例
这是一个完整的 Playbook 示例,它展示了如何在同一个 Playbook 中添加、修改和删除多个定时任务:
---
- name: Cron jobs management
hosts: all
tasks:
- name: Add daily backup cron job
cron:
name: "daily backup"
minute: "0"
hour: "2"
job: "/usr/local/bin/backup.sh"
- name: Add weekly temp files cleanup cron job
cron:
name: "weekly temp files cleanup"
minute: "0"
hour: "3"
weekday: "1"
job: "/usr/bin/find /tmp -type f -atime +7 -delete"
- name: Add hourly log rotation cron job
cron:
name: "hourly log rotation"
minute: "0"
job: "/usr/sbin/logrotate"
- name: Remove old backup cron job
cron:
name: "old backup job"
state: absent
- name: Add daily maintenance job for specific user
cron:
name: "daily maintenance"
minute: "0"
hour: "1"
job: "/usr/local/bin/maintenance.sh"
user: "username"