vars tower example define ansible ansible-playbook

ansible - tower - Abortar la ejecución de la tarea restante si falla cierta condición



execute ansible yaml (3)

Quiero abortar la ejecución de la tarea restante si falla alguna condición. y mostrar el mensaje de error adecuado.

Entonces, en lugar de omitir la tarea restante, quiero mostrar un mensaje de error y detener la ejecución de un libro de jugabilidad ansible.

Digamos que estoy ejecutando debajo del comando

$ ansible-playbook playbook.yml -e "param1=value1 param2=value"

Mi libro de jugadas se parece a esto:

playbook.yml: -

--- - hosts: local user: roop gather_facts: no vars: {param1: "", param2: ""} tasks: #check whether param1 defined - name: ''Check for valid param1'' shell: echo {{ param1 }} register: isValidParam1 when: param1 !="" #check if param1 is null or invalid - name: ''check if param1 is null or invalid'' debug: msg="Please enter correct param1" when: param1 == "" #check whether param2 defined - name: ''Check for valid param2'' shell: echo {{ param2 }} register: isValidParam2 when: param2 != "" #check if param2 is null or invalid - name: ''check if param2 is null or invalid'' debug: msg="Please enter correct param2" when: param2 == "" #check params is valid and defined - name: ''Check for valid params'' shell: echo "param1={{ param1 }} param2={{ param2 }} register: validParams when: isValidParam1 is defined and isValidParam2 is defined #check if params are invalid then abort below all tasks. - name: ''check if validParams is null or invalid'' debug: msg="Please enter correct Params" when: validParams is not defined # based on validParams, and different value of param1 more than 10 task executing.

Como he mencionado en mi último comentario de tarea. Estoy ejecutando más de 10 tareas basadas en validParams y param1 valor diferente. Lo que necesito aquí si validParams no está definido, aborta toda la ejecución y muestre los mensajes de error.

¿Hay alguna manera eficiente de hacer esto? Por favor sugiéreme


Ansible> = 2.0 tiene una función de bloque que le permite agrupar tareas de forma lógica. Esto le permite aplicar un when a un grupo de tareas.

La principal diferencia entre esto y los módulos de falla o afirmación es que la tarea no está marcada como fallida; sólo se ha saltado. Si esto es mejor depende de su caso de uso. Por ejemplo, tengo algunas tareas que escriben en un registro que luego se analiza en busca de fallos; es más fácil hacer esto si solo se registran las condiciones de falla "reales".

Código de ejemplo:

- block: # task 1 # task 2 # task 3 when: "param1 is defined or param2 is defined" # otherwise output a message - block: debug: msg="Missing params" when: "param1 is not defined or param2 is not defined"