Ansible——cron模块

目录

参数总结

示例1:创建一个定时任务

示例2:删除一个定时任务

[示例3:每周一早上 3 点清理临时文件](#示例3:每周一早上 3 点清理临时文件)

示例4:每小时运行一次日志轮转

示例5:为指定用户添加一个定时任务

[Playbook (YAML 格式) 中管理定时任务。](#Playbook (YAML 格式) 中管理定时任务。)

示例1:创建一个定时任务

示例2:删除一个定时任务

[示例3:每周一早上 3 点清理临时文件](#示例3:每周一早上 3 点清理临时文件)

示例4:每小时运行一次日志轮转

示例5:为指定用户添加一个定时任务

[完整的 Playbook 示例](#完整的 Playbook 示例)


cron 模块是 Ansible 用于管理定时任务的模块。通过 cron 模块,我们可以方便地创建、修改和删除 Unix 系统上的定时任务记录。默认情况下每个任务都会被添加到用户的 crontab 文件中,这些任务会在同一个文件里。Crontab 文件是以用户为单位管理的,每个用户都有自己的 crontab 文件。默认是 root 用户。

参数总结

  1. name:

    • 描述:cron 作业的名称。
    • 类型:字符串
    • 必需:是
  2. minute:

    • 描述:cron 作业的分钟部分。
    • 类型:字符串
    • 默认值:*
  3. hour:

    • 描述:cron 作业的小时部分。
    • 类型:字符串
    • 默认值:*
  4. day:

    • 描述:cron 作业的日部分。
    • 类型:字符串
    • 默认值:*
  5. month:

    • 描述:cron 作业的月部分。
    • 类型:字符串
    • 默认值:*
  6. weekday:

    • 描述:cron 作业的星期部分。
    • 类型:字符串
    • 默认值:*
  7. job:

    • 描述:要执行的命令或脚本。
    • 类型:字符串
    • 必需:是
  8. user:

    • 描述:执行 cron 作业的用户。
    • 类型:字符串
    • 默认值:root
  9. 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"
相关推荐
明航咨询_贾老师5 小时前
RHCA Ansible高级自动化(DO374)认证信息整理
运维·自动化·ansible·rhca·红帽认证
有毒的教程4 天前
Ansible批量操作自动化完整教程:批量部署服务、配置同步、软件更新实战
运维·自动化·ansible
Hy行者勇哥9 天前
用Cursor智能编写Ansible/Terraform脚本,打通CI/CD链路
ci/cd·ansible·terraform
芷栀夏11 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风22 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠1 个月前
ansible编辑
网络·ansible
芳心粽伙饭1 个月前
Ansible课后作业
ansible
烁3471 个月前
Ansible初识
ansible
烁3471 个月前
Ansible安装部署调试
ansible
烁3471 个月前
Ansible命令
ansible