Eliminar un trabajo cron
En este paso, aprenderá cómo eliminar trabajos cron no deseados utilizando el módulo Ansible Cron. Gestionar el ciclo de vida completo de los trabajos cron es una habilidad importante para los administradores de sistemas y los ingenieros DevOps.
Por qué eliminar trabajos cron
Hay varias razones por las cuales es posible que necesite eliminar trabajos cron:
- La tarea programada ya no es necesaria.
- Desea reemplazar un trabajo existente con una nueva configuración.
- Necesita limpiar el sistema para mejorar su mantenibilidad.
- La tarea debe deshabilitarse temporalmente.
Ansible facilita la eliminación de trabajos cron de manera sistemática y repetible en toda su infraestructura.
Comprender el parámetro state
El módulo Ansible Cron utiliza el parámetro state para controlar si un trabajo cron debe estar presente o ausente:
state: present - Este es el valor predeterminado. Asegura que el trabajo cron exista con la configuración especificada.
state: absent - Esto asegura que el trabajo cron no exista, eliminándolo si se creó previamente.
Modificar el playbook de Ansible
Modifiquemos nuestro playbook para eliminar el primer trabajo cron que creamos (llamado my_cron_job). Abra el archivo /home/labex/project/cron_module_playbook.yaml en el WebIDE y reemplace su contenido con lo siguiente:
- hosts: localhost
tasks:
- name: Remove the cron job
cron:
name: my_cron_job
state: absent
Los elementos clave de este playbook son:
name: my_cron_job - Esto identifica el trabajo cron que se va a eliminar por su nombre.
state: absent - Esto le dice a Ansible que asegure que el trabajo cron no exista.
Tenga en cuenta que solo necesitamos especificar el nombre del trabajo cron para identificarlo para su eliminación. No se necesitan los otros parámetros (como minuto, hora, trabajo, etc.).
Ejecutar el playbook modificado
Ahora, ejecute el playbook de Ansible modificado para eliminar el trabajo cron. En la terminal, ejecute el siguiente comando:
cd /home/labex/project
ansible-playbook cron_module_playbook.yaml
Debería ver una salida similar a esta:
[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 línea changed: [localhost] indica que el trabajo cron se eliminó correctamente.
Verificar la eliminación del trabajo cron
Para verificar que el trabajo cron se ha eliminado, consulte el crontab del sistema:
crontab -l
Ahora debería ver solo el segundo trabajo cron en la salida:
#Ansible: custom_cron_job
0 9 * * * /home/labex/project/script.sh
La entrada my_cron_job se ha eliminado, como se solicitó en nuestro playbook.
Idempotencia en Ansible
Una de las características clave de Ansible es la idempotencia, la propiedad de que aplicar la misma operación varias veces da el mismo resultado que aplicarla una vez. Esto es especialmente útil para tareas como la eliminación de trabajos cron.
Ejecutemos el playbook nuevamente para demostrar esto:
ansible-playbook cron_module_playbook.yaml
Debería ver una salida similar a:
[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
Note que la segunda vez, la salida muestra ok en lugar de changed para la tarea de eliminación. Esto se debe a que el trabajo cron ya se había eliminado, por lo que no se necesitaron cambios.
Gestionar múltiples trabajos cron
En escenarios del mundo real, es posible que necesite gestionar múltiples trabajos cron en un solo playbook. Puede incluir múltiples tareas cron, cada una con su propia configuración:
- 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
Este enfoque le permite gestionar el ciclo de vida completo de todos sus trabajos cron en un solo playbook controlado por versiones.
¡Felicidades! Ha aprendido con éxito cómo eliminar trabajos cron utilizando el módulo Ansible Cron. Esto completa la gestión básica del ciclo de vida de los trabajos cron: creación, modificación y eliminación.