cron#

Модуль ansible.builtin.cron используется для управления планировщиком заданий cron через файлы настройки типа crontab. Cron полезен для автоматизации периодически выполняемых операций, таких как резервное копирование, обновление или очистка временных файлов.

Описание применения модулей приведено в документе Модули.

Особенности работы#

Особенности использования модуля ansible.builtin.cron:

  • Модуль позволяет управлять как заданиями cron, так и переменными окружения в crontab. Для управления переменными окружения используются параметры env, name и job.

  • Для заданий cron Ansible добавляет комментарий #Ansible: <name>. Он используется для поиска и последующего обновления или удаления задания.

  • Для переменных окружения комментарий не добавляется, но Ansible использует параметр name для поиска нужной строки.

  • Модуль требует привилегий на использование cron.

  • Позволяет управлять заданиями для различных пользователей с помощью параметра user.

  • Можно полностью удалить все задания cron конкретного пользователя с помощью параметра cron_file.

  • В строках настройки необходимо экранировать специальные символы (например, %).

  • Предназначен для использования только на POSIX-совместимых ОС.

Параметры#

Модуль принимает следующие параметры:

backup#

Создание резервной копии файла crontab перед его изменением. Путь к файлу резервной копии возвращается в переменной backup_file.

Возможные значения:

  • false – не создавать резервную копию;

  • true – создать резервную копию.

Значение по умолчанию: false.

cron_file#

Обязательный параметр, если не указан name.

Файл, который будет использоваться вместо crontab конкретного пользователя.

Важно

  • Указанный файл должен управляться только модулем. Добавление записей вручную не допускается.

  • Никогда не используйте /etc/crontab как значение этого параметра.

  • Если используется данный параметр, также требуется указание параметра user (кроме случаев, когда state=absent).

Если указан относительный путь, он интерпретируется относительно /etc/cron.d/.

day, dom#

Число месяца, когда должно выполняться задание. Например: 1-31, *, */2 и так далее.

Значение параметра игнорируется, если задано значение special_time.

Значение по умолчанию: * (каждый день).

disabled#

Комментирование строки с заданием в crontab. Задание будет отключено.

Используется только совместно со state=present.

Возможные значения:

  • false – задание активно;

  • true – задание неактивно (закомментировано).

Значение по умолчанию: false.

env#

Управление переменной окружения в crontab.

Для задания названия и значения переменной используйте параметры name и job соответственно.

Возможные значения:

  • false – управление заданиями;

  • true – управление переменной.

Значение по умолчанию: false.

hour#

Час, в который должно выполняться задание. Например: 0-23, *, */2 и так далее.

Значение параметра игнорируется, если задано значение special_time.

Значение по умолчанию: * (каждый час).

insertafter#

Переменная окружения, после которой нужно вставить новую переменную.

Используется с env=true и state=present.

Возможные значения:

  • Название существующей переменной окружения.

  • Специальное значение (например, BOF (Beginning Of File) – вставка в начало файла crontab).

insertbefore#

Переменная окружения, перед которой нужно вставить новую переменную.

Используется с env=true и state=present.

Возможные значения:

  • Название существующей переменной окружения.

  • Специальное значение (например, EOF (End Of File) – вставка в конец файла crontab).

job, value#

Обязательный параметр при state=present.

Команда для выполнения.

Важно

Команда для выполнения должна быть оформлена одной строкой.

Используется как значение переменной окружения, если env=true.

minute#

Минута, в которую должно выполняться задание. Например: 0-59, *, */2 и так далее.

Значение параметра игнорируется, если задано значение special_time.

Значение по умолчанию: * (каждая минута).

month#

Месяц, в который должно выполняться задание. Например: 1-12, *, */2 и так далее.

Значение параметра игнорируется, если задано значение special_time.

Значение по умолчанию: * (каждый месяц).

name#

Обязательный параметр.

Уникальное название задания в crontab.

Используется как название переменной окружения, если env=true.

special_time#

Специальные значения для расписания задания.

Возможные значения:

  • annually – ежегодно (один раз в год, 1 января в 00:00);

  • daily – ежедневно (каждый день в 00:00);

  • hourly – ежечасно (в начале каждого часа);

  • monthly – ежемесячно (1 числа каждого месяца в 00:00);

  • reboot – один раз после перезагрузки;

  • weekly – еженедельно (каждое воскресенье в 00:00);

  • yearly – то же, что annually.

При использовании этого параметра значения minute, hour, day, month и weekday игнорируются.

state#

Требуемое состояние задания или переменной окружения.

Возможные значения:

  • present – задание или переменная окружения будет добавлена или обновлена;

  • absent – задание или переменная окружения будет удалена.

Значение по умолчанию: present.

user#

Название учетной записи пользователя, чей crontab должен быть изменен.

Если значение не задано, используется текущий пользователь (тот, от имени которого выполнено подключение к управляемому узлу).

weekday, dow#

День недели, когда должно выполняться задание. Например, 0-6, *, */2 и так далее. Значения 0 и 7 соответствуют воскресенью, 1 – понедельнику.

Значение параметра игнорируется, если задано значение special_time.

Значение по умолчанию: * (каждый день).

Атрибуты#

Атрибуты определяют функции Ansible, которые может использовать модуль.

Атрибут

Описание

check_mode

Модуль полностью поддерживает режим проверки.

diff_mode

Модуль поддерживает режим сравнения.

platform

Модуль поддерживает только POSIX-совместимые ОС.

Примеры#

Ниже приведены примеры использования модуля ansible.builtin.cron в различных сценариях.

Создание задания cron для ежедневного выполнения сценария#

Следующий пример описывает создание задания cron daily-backup, которое будет выполняться каждый день в 02:30.

---
- name: Run backup script every day at 2:30
  ansible.builtin.cron:
    name: "daily-backup"
    minute: 30
    hour: 2
    job: "/usr/local/bin/backup.sh"

Удаление задания по названию#

Следующий пример описывает удаление задания cron с названием daily-backup.

---
- name: Remove daily backup job
  ansible.builtin.cron:
    name: "daily-backup"
    state: absent

Отключение задания#

Следующий пример описывает отключение задания cron logrotate.

---
- name: Add a cron job but leave it disabled
  ansible.builtin.cron:
    name: "logrotate"
    job: "/usr/sbin/logrotate"
    minute: 0
    hour: 1
    disabled: true

Создание задания cron для другого пользователя#

Следующий пример описывает создание задания clear-cache в crontab пользователя deploy.

---
- name: Add a job for user 'deploy'
  ansible.builtin.cron:
    name: "clear-cache"
    job: "/usr/bin/clear-cache.sh"
    hour: 3
    user: "deploy"

Добавление переменной окружения#

Следующий пример описывает добавление переменной окружения PATH в crontab.

---
- name: Set PATH variable in crontab
  ansible.builtin.cron:
    name: "PATH"
    env: true
    job: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"

Изменение порядка добавления записи#

Следующий пример описывает добавление задания cron early-task в начало файла crontab с помощью параметра insertafter: BOF.

---
- name: Insert cron job at the top of the crontab
  ansible.builtin.cron:
    name: "early-task"
    job: "/usr/bin/early-task.sh"
    insertafter: BOF