Gestión avanzada de tareas cron
Si bien el uso básico del módulo cron
de Ansible es sencillo, existen varias técnicas y características avanzadas que pueden ayudarlo a gestionar las tareas cron de manera más efectiva.
Ejecución condicional de tareas cron
A veces, es posible que desee ejecutar una tarea cron solo cuando se cumplan ciertas condiciones. Puede lograr esto utilizando las declaraciones condicionales de Ansible, como las cláusulas 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
En este ejemplo, la tarea cron solo se creará si el uso del disco en el dispositivo sda
es superior al 80%.
Plantillas de tareas cron
Si tiene múltiples tareas cron que comparten configuraciones similares, puede utilizar plantillas Jinja2 para hacer que sus playbooks de Ansible sean más mantenibles. Aquí hay un ejemplo:
- 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
En este ejemplo, las configuraciones de las tareas cron se definen como una lista de diccionarios, que luego se recorren en un bucle y se aplican a los hosts remotos.
Validación de tareas cron
Para asegurarse de que sus tareas cron estén configuradas correctamente, puede utilizar el plugin de búsqueda cron_job
para validar las tareas cron existentes en los hosts remotos:
- 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') }}"
Esta tarea utiliza el plugin de búsqueda cron_job
para recuperar la lista de tareas cron en los hosts remotos y luego afirma que las tareas cron esperadas están presentes.
Al incorporar estas técnicas avanzadas, puede crear soluciones de gestión de tareas cron más robustas y flexibles con Ansible.