ansible.builtin.cron 模块 – 管理 cron.d 和 crontab 条目
注意
此模块是 ansible-core 的一部分,并包含在所有 Ansible 安装中。在大多数情况下,即使不指定 collections 关键字,也可以使用短模块名称 cron。但是,我们建议您使用 完全限定的集合名称 (FQCN) ansible.builtin.cron,以便轻松链接到模块文档,并避免与其他可能具有相同模块名称的集合冲突。
概要
- 使用此模块管理 crontab 和环境变量条目。此模块允许您创建环境变量和命名的 crontab 条目,更新或删除它们。 
- 当管理 crontab 作业时:模块包含一行,其中包含 crontab 条目的描述 - "#Ansible: <name>",对应于传递给模块的- name,未来的 ansible/module 调用使用该描述来查找/检查状态。- name参数应该是唯一的,更改- name值将导致创建一个新的 cron 任务(或删除一个不同的任务)。
- 当管理环境变量时,不添加注释行,但是当模块需要查找/检查状态时,它使用 - name参数来查找环境变量定义行。
- 当使用诸如 - %等符号时,必须正确转义它们。
要求
在执行此模块的主机上需要以下要求。
- cron(任何符合 'vixie cron' 的变体,如 cronie) 
参数
| 参数 | 注释 | 
|---|---|
| 如果设置,则在修改 crontab 之前创建其备份。备份的位置由该模块在  选项 
 | |
| 如果指定,则使用此文件而不是单个用户的 crontab。假设此文件完全由模块管理,如果该文件包含多个条目,请勿使用,永远不要用于 /etc/crontab。 如果这是相对路径,则相对于  许多 Linux 发行版期望(有些要求)文件名部分仅由大小写字母、数字、下划线和连字符组成。 使用此参数需要您也指定  此参数或  | |
| 与  如果指定,则环境变量将插入在指定环境变量的声明之后。 | |
| 与  如果指定,则环境变量将插入在指定环境变量的声明之前。 | |
| 对一个 crontab 条目的描述,或者,如果设置了  从 ansible-core 2.12 开始,此参数始终为必需。 | |
| 确保作业或环境变量存在或不存在。 选项 
 | |
| 应该修改其 crontab 的特定用户。 如果未设置,则此参数默认为当前用户。 | |
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 支持: 完整 | 可以在 check_mode 中运行并返回更改状态预测,而无需修改目标,如果不支持,则会跳过该操作。 | |
| 支持: 完整 | 在 diff 模式下,将返回已更改(或在 check_mode 下可能需要更改)的详细信息 | |
| 平台: posix | 可以操作的目标操作系统/系列 | 
注释
注意
- 如果您在使用 cron 和 MacOS 时遇到权限问题,您应该查看官方 MacOS 文档以获取更多信息。 
示例
- name: Ensure a job that runs at 2 and 5 exists. Creates an entry like "0 5,2 * * ls -alh > /dev/null"
  ansible.builtin.cron:
    name: "check dirs"
    minute: "0"
    hour: "5,2"
    job: "ls -alh > /dev/null"
- name: 'Ensure an old job is no longer present. Removes any job that is prefixed by "#Ansible: an old job" from the crontab'
  ansible.builtin.cron:
    name: "an old job"
    state: absent
- name: Creates an entry like "@reboot /some/job.sh"
  ansible.builtin.cron:
    name: "a job for reboot"
    special_time: reboot
    job: "/some/job.sh"
- name: Creates an entry like "PATH=/opt/bin" on top of crontab
  ansible.builtin.cron:
    name: PATH
    env: yes
    job: /opt/bin
- name: Creates an entry like "APP_HOME=/srv/app" and insert it after PATH declaration
  ansible.builtin.cron:
    name: APP_HOME
    env: yes
    job: /srv/app
    insertafter: PATH
- name: Creates a cron file under /etc/cron.d
  ansible.builtin.cron:
    name: yum autoupdate
    weekday: "2"
    minute: "0"
    hour: "12"
    user: root
    job: "YUMINTERACTIVE=0 /usr/sbin/yum-autoupdate"
    cron_file: ansible_yum-autoupdate
- name: Removes a cron file from under /etc/cron.d
  ansible.builtin.cron:
    name: "yum autoupdate"
    cron_file: ansible_yum-autoupdate
    state: absent
- name: Removes "APP_HOME" environment variable from crontab
  ansible.builtin.cron:
    name: APP_HOME
    env: yes
    state: absent
