Loops aninhados com subelements
Percorra listas dentro de listas.
Loops aninhados com subelements é uma aula grátis de Ansible Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ansible Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ansible Academy inclui 4 aulas no total.
Listas dentro de listas
Às vezes, cada item contém sua própria lista: um usuário com várias chaves SSH, um grupo com muitos membros. Essa é uma estrutura aninhada. 🪆
A consulta subelements
A consulta subelements associa cada elemento pai a cada elemento filho da sua lista interna, transformando o aninhamento em iterações individuais.
loop: "{{ users | subelements('keys') }}"Dois argumentos
subelements recebe a lista pai e o nome da chave interna a ser expandida. Ele produz uma iteração para cada elemento filho.
vars:
users:
- name: alice
keys:
- keyA
- keyBitem se torna um par
Com subelements, item é uma lista de duas partes: item.0 é o dicionário pai, e item.1 é o valor do filho atual.
- ansible.builtin.debug:
msg: "{{ item.0.name }} has {{ item.1 }}"
loop: "{{ users | subelements('keys') }}"Autorize muitas chaves SSH
O caso clássico: forneça a cada usuário todas as suas chaves SSH. item.0.name é o usuário, e item.1 é uma chave a cada iteração.
- ansible.posix.authorized_key:
user: "{{ item.0.name }}"
key: "{{ item.1 }}"
loop: "{{ users | subelements('keys') }}"O filho pode ser um dicionário
Os elementos internos também podem ser dicionários. Nesse caso, item.1 tem seus próprios campos, como item.1.path ou item.1.mode.
Conte as iterações
Três usuários com duas chaves cada significam seis iterações. subelements multiplica automaticamente os pais pelos filhos.
Ignore listas internas ausentes
Se um pai puder não ter a chave interna, adicione skip_missing para que subelements a ignore silenciosamente em vez de falhar.
loop: "{{ users | subelements('keys', skip_missing=true) }}"Por que não usar dois loops?
Uma tarefa não pode aninhar diretamente duas palavras-chave loop. subelements é a forma limpa e compatível de percorrer uma estrutura pai-filho em uma única tarefa.
Legibilidade é melhor que esperteza
Dados profundamente aninhados podem ficar difíceis de acompanhar. Mantenha suas estruturas rasas quando possível; use subelements quando realmente precisar dele.
Ainda idempotente
Cada par é uma chamada de módulo independente, portanto adicionar uma chave já presente informa ok. O aninhamento não altera nada nas execuções seguras.
Verificação rápida
Ao usar subelements, a que item.0 se refere?
Recapitulação: loops aninhados
Você transformou dados pai-filho em uma estrutura plana com subelements, usou item.0 e item.1 e tratou listas ausentes com segurança. A seguir: loop_control. 🎉
Perguntas Frequentes
A aula “Loops aninhados com subelements” é grátis?
Sim — o texto completo de “Loops aninhados com subelements” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ansible Academy, atualize para CoddyKit PRO. O curso de Ansible Academy inclui 4 aulas no total.
O que vou aprender em “Loops aninhados com subelements”?
Percorra listas dentro de listas. Você pratica Ansible Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ansible Academy?
Nenhuma experiência prévia é necessária. Ansible Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Loops aninhados com subelements”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ansible Academy?
Sim. Cada aula de Ansible Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- A palavra-chave loop sobre uma lista
- Percorrendo dicionários
- Loops aninhados com subelements
- loop_control: label, index e pause