Удаление задачи cron
На этом этапе вы научитесь удалять ненужные задачи cron с использованием модуля Ansible Cron. Управление полным жизненным циклом задач cron является важным навыком для системных администраторов и инженеров DevOps.
Причины удаления задач cron
Существует несколько причин, по которым вам может понадобиться удалить задачи cron:
- Запланированная задача больше не нужна.
- Вы хотите заменить существующую задачу новой конфигурацией.
- Вам нужно очистить систему для улучшения ее поддерживаемости.
- Задачу нужно временно отключить.
Ansible позволяет легко удалять задачи cron систематически и повторно в рамках всей вашей инфраструктуры.
Понимание параметра state
Модуль Ansible Cron использует параметр state
для управления тем, должна ли задача cron существовать или быть удалена:
state: present
- Это значение по умолчанию. Оно гарантирует, что задача cron существует с указанной конфигурацией.
state: absent
- Это гарантирует, что задача cron не существует, удаляя ее, если она была создана ранее.
Изменение Ansible-плейбука
Давайте изменим наш плейбук, чтобы удалить первую задачу cron, которую мы создали (с именем my_cron_job
). Откройте файл /home/labex/project/cron_module_playbook.yaml
в WebIDE и замените его содержимое следующим:
- hosts: localhost
tasks:
- name: Remove the cron job
cron:
name: my_cron_job
state: absent
Основные элементы этого плейбука:
name: my_cron_job
- Это идентифицирует задачу cron, которую нужно удалить, по ее имени.
state: absent
- Это сообщает Ansible, что задача cron не должна существовать.
Обратите внимание, что нам нужно только указать имя задачи cron для ее идентификации при удалении. Другие параметры (например, минута, час, задача и т.д.) не нужны.
Запуск измененного плейбука
Теперь запустите измененный Ansible-плейбук, чтобы удалить задачу cron. В терминале выполните следующую команду:
cd /home/labex/project
ansible-playbook cron_module_playbook.yaml
Вы должны увидеть вывод, похожий на следующий:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Remove the cron job] *****************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Строка changed: [localhost]
указывает, что задача cron была успешно удалена.
Проверка удаления задачи cron
Чтобы убедиться, что задача cron была удалена, проверьте таблицу cron на системе:
crontab -l
Теперь в выводе вы должны увидеть только вторую задачу cron:
#Ansible: custom_cron_job
0 9 * * * /home/labex/project/script.sh
Запись my_cron_job
была удалена, как указано в нашем плейбуке.
Идемпотентность в Ansible
Одной из ключевых особенностей Ansible является идемпотентность - свойство, при котором повторное применение одной и той же операции дает тот же результат, что и применение ее один раз. Это особенно полезно для задач, таких как удаление задач cron.
Давайте запустим плейбук еще раз, чтобы продемонстрировать это:
ansible-playbook cron_module_playbook.yaml
Вы должны увидеть вывод, похожий на следующий:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Remove the cron job] *****************************************************
ok: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Обратите внимание, что во второй раз в выводе для задачи удаления показано ok
, а не changed
. Это потому, что задача cron уже была удалена, поэтому никаких изменений не было необходимо.
Управление несколькими задачами cron
В реальных сценариях вам может понадобиться управлять несколькими задачами cron в одном плейбуке. Вы можете включить несколько задач cron, каждая с своей собственной конфигурацией:
- hosts: localhost
tasks:
- name: Remove first cron job
cron:
name: job1
state: absent
- name: Create second cron job
cron:
name: job2
minute: "0"
hour: "12"
job: /path/to/script.sh
- name: Update third cron job
cron:
name: job3
minute: "*/10"
job: /path/to/another/script.sh
Этот подход позволяет управлять полным жизненным циклом всех ваших задач cron в одном, контролируемом версиями плейбуке.
Поздравляем! Вы успешно научились удалять задачи cron с использованием модуля Ansible Cron. Это завершает базовое управление жизненным циклом задач cron: создание, изменение и удаление.