Bucles anidados con subelements
Recorra listas dentro de listas
Bucles anidados con subelements es una lección gratuita de Ansible Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ansible Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ansible Academy incluye 4 lecciones en total.
Listas dentro de listas
A veces cada elemento contiene su propia lista: un usuario con varias claves SSH o un grupo con muchos miembros. Esa es una estructura anidada. 🪆
La búsqueda subelements
La búsqueda subelements empareja cada elemento principal con cada elemento secundario de su lista interna y convierte la estructura anidada en iteraciones individuales.
loop: "{{ users | subelements('keys') }}"Dos argumentos
subelements recibe la lista principal y el nombre de la clave interna que se expandirá. Produce una iteración por cada elemento secundario.
vars:
users:
- name: alice
keys:
- keyA
- keyBitem se convierte en un par
Con subelements, item es una lista de dos partes: item.0 es el diccionario principal y item.1 es el valor secundario actual.
- ansible.builtin.debug:
msg: "{{ item.0.name }} has {{ item.1 }}"
loop: "{{ users | subelements('keys') }}"Autorice muchas claves SSH
El caso clásico: proporcione a cada usuario todas sus claves SSH. item.0.name es el usuario y item.1 es una clave por iteración.
- ansible.posix.authorized_key:
user: "{{ item.0.name }}"
key: "{{ item.1 }}"
loop: "{{ users | subelements('keys') }}"El elemento secundario puede ser un diccionario
Los elementos internos también pueden ser diccionarios. En ese caso, item.1 tiene sus propios campos, como item.1.path o item.1.mode.
Cuente las iteraciones
Tres usuarios con dos claves cada uno implican seis iteraciones. subelements multiplica automáticamente los elementos principales por sus elementos secundarios.
Omita las listas internas que falten
Si a un elemento principal puede faltarle la clave interna, añada skip_missing para que subelements la ignore silenciosamente en lugar de fallar.
loop: "{{ users | subelements('keys', skip_missing=true) }}"¿Por qué no usar dos loops?
Una tarea no puede anidar directamente dos palabras clave loop. subelements es la forma limpia y compatible de recorrer una estructura principal-secundaria en una sola tarea.
La claridad es mejor que la astucia
Los datos profundamente anidados pueden resultar difíciles de seguir. Mantenga las estructuras tan planas como pueda y recurra a subelements cuando realmente lo necesite.
Sigue siendo idempotente
Cada par es una llamada independiente al módulo, por lo que añadir una clave que ya está presente informa ok. El anidamiento no cambia nada respecto a las ejecuciones seguras.
Comprobación rápida
Al usar subelements, ¿a qué hace referencia item.0?
Resumen: bucles anidados
Convirtió los datos principales-secundarios en una estructura plana mediante subelements, utilizó item.0 e item.1 y gestionó de forma segura las listas que faltaban. A continuación: loop_control. 🎉
Aprende YAML con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Bucles anidados con subelements» es gratis?
Sí — el texto completo de «Bucles anidados con subelements» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ansible Academy, actualiza a CoddyKit PRO. El curso de Ansible Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Bucles anidados con subelements»?
Recorra listas dentro de listas Practicas Ansible Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Ansible Academy?
No se requiere experiencia previa. Ansible Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Bucles anidados con subelements»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Ansible Academy?
Sí. Cada lección de Ansible Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- La palabra clave loop sobre una lista
- Recorrer diccionarios
- Bucles anidados con subelements
- loop_control: label, index y pause