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, которые может использовать модуль.
Атрибут |
Описание |
|---|---|
|
Модуль полностью поддерживает режим проверки. |
|
Модуль поддерживает режим сравнения. |
|
Модуль поддерживает только 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