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"
相关推荐
广目软件17 小时前
HA分布式架构采集节点变更操作手册20261029
运维·服务器·ansible·zabbix·prometheus
Moshow郑锴1 天前
Ansible 批量部署 Node.js 服务:ZIP 直解与共享目录分发两种方案对比
node.js·ansible
垚垚学技术_聚焦云原生2 天前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
Moshow郑锴2 天前
GCP MIG 重建后 Ansible 初始化实战:PowerShell + NSSM 挂载 Windows 服务
windows·ansible
承渊政道4 天前
新增一台服务器时还要重新装Nginx?Ansible只改hosts目标列表,同一份Playbook继续执行
运维·nginx·ansible·内网穿透·cpolar
Helix2506 天前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
垚垚学技术_聚焦云原生7 天前
Ansible 变量体系详解:主机变量、组变量、全局变量优先级实战
ansible·自动化运维·devops·变量优先级
I'mChloe16 天前
不再逐台装Docker:我用Ansible Playbook批量统一服务器环境
服务器·docker·ansible
筑梦之路16 天前
Alibaba Cloud Linux 4 制作 Ansible RPM包实践(离线可复用)——筑梦之路
linux·运维·ansible
张洛闻Eren17 天前
Ansible【第一课】:Ansible介绍
运维·数据库·云原生·kubernetes·github·ansible