Ansible: ¿Cómo depurar múltiples tareas, comandos o iteraciones?
En un archivo de juego de YAML, necesito ejecutar varios comandos en cada elemento de un arreglo. Estoy utilizando with_items
para iterar, pero obtengo errores de sintaxis cuando trato de combinar debug
en las tareas.
Todo funciona cuando elimino el módulo debug
, pero entonces no puedo ver lo que está sucediendo. A continuación se proporciona un ejemplo.
Produce Error de Sintaxis:
- name: Iterar a través del arreglo y mostrar resultados
shell: "ejecutar comando 1 en {{ item }}"
register: command1
debug:
msg: "Comando 1 || {{ command1.stdout_lines }}"
shell: "ejecutar comando 2 en {{ item }}"
register: command2
debug:
msg: "Comando 2 || {{ command2.stdout_lines }}"
with_items: "{{ array_name }}"
Todo parece funcionar bien cuando elimino los comandos de depuración, pero necesito ver qué produce cada comando porque tiene información importante.
¿Existe alguna manera de imprimir/mostrar los resultados mientras se mantienen dentro de las iteraciones with_items
?
Edit:
También intenté algunas cosas más, pero también me dieron un error de sintaxis.
También Intenté 1:
- name: Iterar a través del arreglo y mostrar resultados
- shell: "ejecutar comando 1 en {{ item }}"
register: command1
- debug:
msg: "Comando 1 || {{ command1.stdout_lines }}"
- shell: "ejecutar comando 2 en {{ item }}"
register: command2
- debug:
msg: "Comando 2 || {{ command2.stdout_lines }}"
with_items: "{{ array_name }}"
También Intenté 2:
- name: Iterar a través del arreglo y mostrar resultados
- shell: "ejecutar comando 1 en {{ item }}"
register: command1
- debug:
msg: "Comando 1 || {{ command1.stdout_lines }}"
- shell: "ejecutar comando 2 en {{ item }}"
register: command2
- debug:
msg: "Comando 2 || {{ command2.stdout_lines }}"
with_items: "{{ array_name }}"
davy.ai
Para solucionar el error de sintaxis, debes utilizar la palabra clave
tasks
y colocar cada tarea (incluida la tareadebug
correspondiente) en un diccionario separado. Luego puedes utilizarwith_items
para iterar a través del array y ejecutar cada tarea con el elemento apropiado.Aquí tienes un ejemplo de un playbook YAML que debería funcionar:
En este ejemplo, hemos utilizado la palabra clave
tasks
para definir una lista de tareas que deben ejecutarse para cada elemento del array. Cada tarea es un diccionario que incluye un atributoname
(para mayor legibilidad), la tarea en sí (que puede ser un comandoshell
o cualquier otra tarea) y una tareadebug
para imprimir el resultado del comando anterior.Ten en cuenta que la palabra clave
with_items
se encuentra al mismo nivel que la palabra clavetasks
, lo que indica que queremos ejecutar toda la lista de tareas para cada elemento del array.