vars tower example define ansible ansible-playbook

tower - Ansible Ignora los errores en las tareas y falla al final del libro de jugadas si alguna de las tareas tuvo errores



execute ansible yaml (3)

Estoy aprendiendo Ansible. Tengo un libro de jugadas para limpiar los recursos, y quiero que el libro de jugadas ignore todos los errores y continúe hasta el final, y luego falle al final si hubo errores.

Puedo ignorar errores con

ignore_errors: yes

Si se tratara de una tarea, podría hacer algo como (desde la captura de un error ansible)

- name: this command prints FAILED when it fails command: /usr/bin/example-command -x -y -z register: command_result ignore_errors: True - name: fail the play if the previous command did not succeed fail: msg="the command failed" when: "''FAILED'' in command_result.stderr"

¿Cómo fallo al final? Tengo varias tareas, ¿cuál sería mi condición de "cuándo"?


El módulo de falla funciona muy bien! Gracias.

Tenía que definir mi hecho antes de verificarlo, de lo contrario obtendría un error de variable no definida.

Y tuve problemas a la hora de configurar el hecho con comillas y sin espacios.

Esto funcionó:

set_fact: flag="failed"

Esto arrojó errores:

set_fact: flag = failed


Puede envolver todas las tareas que pueden fallar en el bloque y usar ignore_errors: yes con ese bloque.

tasks: - name: ls command: ls -la - name: pwd command: pwd - block: - name: ls non-existing txt file command: ls -la no_file.txt - name: ls non-existing pic command: ls -la no_pic.jpg ignore_errors: yes

Lea más sobre el manejo de errores en bloques here .


Utilice el módulo de Fail .

  1. Use ignore_errors con cada tarea que necesite ignorar en caso de errores.
  2. Establezca una marca (por ejemplo, resultado = falso) siempre que haya una falla en la ejecución de alguna tarea
  3. Al final del libro de jugadas, verifique si la bandera está activada y, en función de eso, falla la ejecución

- fail: msg="The execution has failed because of errors." when: flag == "failed"

Actualizar:

Utilice el registro para almacenar el resultado de una tarea como la que se muestra en su ejemplo. Luego, usa una tarea como esta:

- name: Set flag set_fact: flag = failed when: "''FAILED'' in command_result.stderr"