Gestion avancée des tâches cron
Bien que l'utilisation de base du module Ansible cron
soit simple, il existe plusieurs techniques et fonctionnalités avancées qui peuvent vous aider à gérer les tâches cron plus efficacement.
Exécution conditionnelle des tâches cron
Parfois, vous pouvez souhaiter exécuter une tâche cron seulement lorsque certaines conditions sont remplies. Vous pouvez y parvenir en utilisant les instructions conditionnelles d'Ansible, telles que les clauses when
:
- hosts: all
tasks:
- name: Run backup script if disk usage is above 80%
cron:
name: Run backup script
minute: "*/1"
job: /opt/scripts/backup.sh
when: ansible_facts['ansible_devices']['sda']['percent_used'] > 80
Dans cet exemple, la tâche cron ne sera créée que si l'utilisation du disque sur le périphérique sda
est supérieure à 80 %.
Modèles de tâches cron
Si vous avez plusieurs tâches cron qui partagent des configurations similaires, vous pouvez utiliser des modèles Jinja2 pour rendre vos playbooks Ansible plus faciles à maintenir. Voici un exemple :
- hosts: all
tasks:
- name: Create cron job from template
cron:
name: "{{ item.name }}"
minute: "{{ item.minute }}"
job: "{{ item.job }}"
loop:
- {
name: "Run backup script",
minute: "*/1",
job: "/opt/scripts/backup.sh"
}
- {
name: "Generate reports",
minute: "0 3",
job: "/opt/scripts/generate_reports.sh"
}
loop_control:
loop_var: outer_item
Dans cet exemple, les configurations des tâches cron sont définies sous forme de liste de dictionnaires, qui sont ensuite parcourues et appliquées aux hôtes distants.
Validation des tâches cron
Pour vous assurer que vos tâches cron sont correctement configurées, vous pouvez utiliser le plugin de recherche cron_job
pour valider les tâches cron existantes sur les hôtes distants :
- hosts: all
tasks:
- name: Validate cron jobs
assert:
that:
- "'Run backup script' in cron_job"
- "'Generate reports' in cron_job"
vars:
cron_job: "{{ lookup('cron_job') }}"
Cette tâche utilise le plugin de recherche cron_job
pour récupérer la liste des tâches cron sur les hôtes distants, puis vérifie que les tâches cron attendues sont présentes.
En intégrant ces techniques avancées, vous pouvez créer des solutions de gestion de tâches cron plus robustes et flexibles avec Ansible.