Estoy aprendiendo Ansible. Tengo una playbook para limpiar los recursos, y quiero que el playbook a ignorar todos los errores y seguir adelante hasta el final , y no al final si hubo errores.

Puedo ignorar los errores con

  ignore_errors: yes

Si fue una tarea, yo podría hacer algo como ( de ansible error de la captura)

- 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 puedo fallar en la final ? Tengo varias tareas a la vez, ¿qué sería de mi «Cuando» la condición de ser?

OriginalEl autor Illusionist | 2016-08-10

3 Comentarios

  1. 21

    Uso Fallar módulo.

    1. Uso ignore_errors con todas las tareas que usted necesita para pasar por alto en caso de errores.
    2. Establecer un indicador (por ejemplo, resultado = false) cada vez que hay un fallo en cualquiera de ejecución de la tarea
    3. Al final de la playbook, compruebe si el indicador se establece, y dependiendo de que fallara la ejecución
    - fail: msg="The execution has failed because of errors."
      when: flag == "failed"
    

    Actualización:

    Usar registro para almacenar el resultado de una tarea como la que han mostrado en el ejemplo. A continuación, utilice un trabajo de este tipo:

    - name: Set flag
      set_fact: flag = failed
      when: "'FAILED' in command_result.stderr"
    
    Gracias ! ¿Cómo puedo establecer un indicador sólo en errores en el ansible ?
    ver la actualización. Básicamente, usted está estableciendo este indicador después de cada ejecución de la tarea. Si al final de esta guía, se establece el indicador de error, su playbook es un error. Es sólo un error si alguno de su tarea falla. De lo contrario no será conjunto a error y playbook de ejecución será un éxito.
    Es posible que desee buscar en failed_when y command_result is failed en lugar de la cadena de procesamiento (que voy a dar algo que va a funcionar de manera más genérica para otros comandos).

    OriginalEl autor clever_bassi

  2. 10

    Puede ajustar todas las tareas que pueden fallar en el bloque, y el uso 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 
    

    Leer más sobre el manejo de errores en los bloques de aquí.

    Pero entonces, ¿cómo va a fallar al final? No creo que esto responde a la pregunta.

    OriginalEl autor Olga

  3. 1

    Fallar módulo funciona muy bien! Gracias.

    Tuviera que definir mi hecho antes de comprobar que, de lo contrario me gustaría obtener una variable no definida de error.

    Y he tenido problemas al hacer la configuración de la realidad con comillas y sin espacios.

    Esto funcionó:

    set_fact: flag="failed"
    

    Este tiró errores:

    set_fact: flag = failed 
    

    OriginalEl autor dank

Dejar respuesta

Please enter your comment!
Please enter your name here