Supprimer une tâche cron
Dans cette étape, vous apprendrez à supprimer les tâches cron indésirables en utilisant le module Ansible Cron. Gérer le cycle de vie complet des tâches cron est une compétence importante pour les administrateurs systèmes et les ingénieurs DevOps.
Pourquoi supprimer des tâches cron
Il existe plusieurs raisons pour lesquelles vous pourriez avoir besoin de supprimer des tâches cron :
- La tâche planifiée n'est plus nécessaire.
- Vous souhaitez remplacer une tâche existante par une nouvelle configuration.
- Vous devez nettoyer le système pour améliorer sa maintenabilité.
- La tâche doit être temporairement désactivée.
Ansible facilite la suppression des tâches cron de manière systématique et reproductible dans toute votre infrastructure.
Comprendre le paramètre state
Le module Ansible Cron utilise le paramètre state
pour contrôler si une tâche cron doit être présente ou absente :
state: present
- C'est la valeur par défaut. Elle garantit que la tâche cron existe avec la configuration spécifiée.
state: absent
- Elle garantit que la tâche cron n'existe pas, la supprimant si elle a été créée précédemment.
Modification du playbook Ansible
Modifions notre playbook pour supprimer la première tâche cron que nous avons créée (nommée my_cron_job
). Ouvrez le fichier /home/labex/project/cron_module_playbook.yaml
dans le WebIDE et remplacez son contenu par le suivant :
- hosts: localhost
tasks:
- name: Remove the cron job
cron:
name: my_cron_job
state: absent
Les éléments clés de ce playbook sont :
name: my_cron_job
- Cela identifie la tâche cron à supprimer par son nom.
state: absent
- Cela indique à Ansible de s'assurer que la tâche cron n'existe pas.
Notez que nous n'avons besoin que de spécifier le nom de la tâche cron pour l'identifier pour la suppression. Les autres paramètres (comme minute, heure, tâche, etc.) ne sont pas nécessaires.
Exécution du playbook modifié
Maintenant, exécutez le playbook Ansible modifié pour supprimer la tâche cron. Dans le terminal, exécutez la commande suivante :
cd /home/labex/project
ansible-playbook cron_module_playbook.yaml
Vous devriez voir une sortie similaire à ceci :
[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
La ligne changed: [localhost]
indique que la tâche cron a été supprimée avec succès.
Vérification de la suppression de la tâche cron
Pour vérifier que la tâche cron a été supprimée, vérifiez le fichier crontab sur le système :
crontab -l
Vous devriez maintenant voir seulement la deuxième tâche cron dans la sortie :
#Ansible: custom_cron_job
0 9 * * * /home/labex/project/script.sh
L'entrée my_cron_job
a été supprimée, comme demandé dans notre playbook.
Idempotence dans Ansible
L'une des fonctionnalités clés d'Ansible est l'idempotence - la propriété selon laquelle l'application de la même opération plusieurs fois donne le même résultat que l'application une seule fois. Cela est particulièrement utile pour des tâches telles que la suppression de tâches cron.
Exécutons le playbook à nouveau pour démontrer cela :
ansible-playbook cron_module_playbook.yaml
Vous devriez voir une sortie similaire à :
[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
Notez que la deuxième fois, la sortie affiche ok
au lieu de changed
pour la tâche de suppression. C'est parce que la tâche cron avait déjà été supprimée, donc aucune modification n'était nécessaire.
Gestion de plusieurs tâches cron
Dans des scénarios réels, vous pourriez avoir besoin de gérer plusieurs tâches cron dans un seul playbook. Vous pouvez inclure plusieurs tâches cron, chacune avec sa propre configuration :
- 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
Cette approche vous permet de gérer le cycle de vie complet de toutes vos tâches cron dans un seul playbook contrôlé par version.
Félicitations ! Vous avez appris avec succès à supprimer des tâches cron en utilisant le module Ansible Cron. Cela achève la gestion de base du cycle de vie des tâches cron : création, modification et suppression.