Actualmente estoy escribiendo un Ansible que sigue este formato general y se ejecuta a través de un trabajo cron:

pre_tasks:
  -Configuration /package installation

tasks:
  -Work with installed packages

post_tasks:
  -Cleanup /uninstall packages

El problema con la anterior, es que a veces un comando en el tasks de la sección de falla, y cuando hace el post_tasks sección no se ejecuta, dejando el sistema en un estado desordenado. Es posible obligar a los comandos en post_tasks para correr, incluso si una falla o error fatal se produce?

Mi enfoque actual es la aplicación de ignore_errors: yes para todo bajo el tasks sección y, a continuación, aplicar una when: condicional para cada tarea de manera individual para comprobar si el comando anterior lo logró.

Esta solución parece un hack, pero se pone peor, porque incluso con ignore_errors: yes conjunto, si un Fatal error para una tarea de toda la obra seguirá inmediatamente a fallar, así que tengo que ejecutar también un cron había un script de bash para comprobar manualmente en las cosas después de llegar a jugar de ejecución.

Todo lo que quiero es una garantía de que incluso si tasks falla, post_tasks va a ejecutar. Estoy seguro de que hay una manera de hacer esto sin tener que recurrir a script de bash contenedores.

Por desgracia (para el caso de uso) post_tasks no está pensado como una limpieza. Citando el ansible plomo: «tareas de Pre y post tareas son en gran medida, diseñado para trabajar con los equilibradores de carga.» (github.com/ansible/ansible/issues/3869)

OriginalEl autor Mark | 2014-05-26

3 Comentarios

  1. -7

    No uso post_tasks bloque, sino que tienen su proceso de limpieza como parte de regular tasks.

    ¿Cómo esta la respuesta a la pregunta? Si algo falla, usted está diciendo que cada tarea en su playbook necesita ignore_errors: yes porque Ansible no tiene discernible manera para hacer cualquier tipo de post_cleanup? No es un libro de jugadas, por su propia admisión, detener el primer error? ¿Cómo va la tarea de limpieza consigue correr?
    alguna solución a esto?
    la solución a qué?
    Garantiza la ejecución de una tarea al final de la playbook. Como una especie de, por último, al final del bloque try-catch. Me estoy moviendo mi ansible registros a otra ubicación al final de la playbook de ejecución. Necesito que esto suceda, incluso si playbook falla.
    Estoy buscando una solución para el mismo problema, todas las soluciones que he encontrado son muy hackish.

    OriginalEl autor Mxx

Dejar respuesta

Please enter your comment!
Please enter your name here