ansible.builtin.cron 模块 – 管理 cron.d 和 crontab 条目

注意

此模块是 ansible-core 的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 collections 关键字,也可以使用简短的模块名称 cron。但是,我们建议您使用 完全限定的集合名称 (FQCN) ansible.builtin.cron,以便轻松链接到模块文档,并避免与可能具有相同模块名称的其他集合发生冲突。

概要

  • 使用此模块来管理 crontab 和环境变量条目。此模块允许您创建环境变量和命名的 crontab 条目,更新或删除它们。

  • 当管理 crontab 作业时:模块包含一行描述 crontab 条目 "#Ansible: <name>",对应于传递给模块的 name,这将被未来 ansible/模块调用用来查找/检查状态。 name 参数应该唯一,更改 name 值会导致创建新的 cron 任务(或删除不同的任务)。

  • 当管理环境变量时,不会添加注释行,但是,当模块需要查找/检查状态时,它会使用 name 参数来查找环境变量定义行。

  • 使用像 % 这样的符号时,必须适当地转义它们。

要求

以下要求在执行此模块的主机上是必需的。

  • cron(任何“vixie cron”兼容变体,如 cronie)

参数

参数

注释

backup

布尔值

如果设置,在修改 crontab 之前创建备份。备份位置在模块的 backup_file 变量中返回。

选项

  • false ← (默认)

  • true

cron_file

路径

如果指定,则使用此文件而不是单个用户的 crontab。假设此文件由模块独占管理,如果文件包含多个条目,请不要使用,永远不要用于 /etc/crontab。

如果这是一个相对路径,它将相对于 /etc/cron.d 进行解释。

许多 Linux 发行版期望(有些要求)文件名部分仅包含大写和小写字母、数字、下划线和连字符。

使用此参数需要您指定 user,除非 state=absent

此参数或 name 是必需的。

day

别名:dom

字符串

作业应该运行的月份中的日期 (1-31, *, */2 等)。

默认值: "*"

disabled

布尔值

如果作业应该在 crontab 中禁用(注释掉)。

只有在 state=present 时才有效。

选项

  • false ← (默认)

  • true

env

布尔值

如果设置,则管理 crontab 的环境变量。

新变量将添加到 crontab 顶部。

namevalue 参数是环境变量的名称和值。

选项

  • false ← (默认)

  • true

hour

字符串

作业应该运行的小时 (0-23, *, */2 等)。

默认值: "*"

insertafter

字符串

state=presentenv 一起使用。

如果指定,环境变量将在指定环境变量的声明之后插入。

insertbefore

字符串

state=presentenv 一起使用。

如果指定,环境变量将在指定环境变量的声明之前插入。

job

别名:value

字符串

要执行的命令,或者,如果 env 设置,则为环境变量的值。

命令不应包含换行符。

如果 state=present,则必需。

minute

字符串

作业应该运行的分钟 (0-59, *, */2 等)。

默认值: "*"

month

字符串

作业应该运行的一年中的月份 (1-12, *, */2 等)。

默认值: "*"

name

字符串 / 必需

crontab 条目的描述,或者,如果 env 设置,则为环境变量的名称。

从 ansible-core 2.12 开始,此参数始终是必需的。

special_time

字符串

特殊时间规范昵称。

选项

  • "annually"

  • "daily"

  • "hourly"

  • "monthly"

  • "reboot"

  • "weekly"

  • "yearly"

state

字符串

是否确保作业或环境变量存在或不存在。

选项

  • "absent"

  • "present" ← (默认)

user

字符串

要修改其 crontab 的特定用户。

未设置时,此参数默认为当前用户。

weekday

别名:dow

字符串

作业应运行的星期几(0-6 代表星期日到星期六,* 等)。

默认值: "*"

属性

属性

支持

描述

check_mode

支持:完全支持

可在 check_mode 下运行并返回更改状态预测,而不会修改目标,如果不受支持,则将跳过操作。

diff_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

作者

  • Dane Summers (@dsummersl)

  • Mike Grozak (@rhaido)

  • Patrick Callahan (@dirtyharrycallahan)

  • Evan Kaufman (@EvanK)

  • Luca Berruti (@lberruti)