Geneste lussen met subelements
Itereer door lijsten binnen lijsten.
Geneste lussen met subelements is een gratis Ansible Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Ansible Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Ansible Academy bevat in totaal 4 lessen.
Lijsten in lijsten
Soms bevat elk item zijn eigen lijst: een gebruiker met meerdere SSH-sleutels of een groep met veel leden. Dat is een geneste structuur. 🪆
De subelements-lookup
De subelements-lookup koppelt elk bovenliggend item aan elk onderliggend item in de binnenste lijst en maakt van de nesting afzonderlijke iteraties.
loop: "{{ users | subelements('keys') }}"Twee argumenten
subelements krijgt de bovenliggende lijst en de naam van de binnenste sleutel die moet worden uitgevouwen. Het levert één iteratie per onderliggend element op.
vars:
users:
- name: alice
keys:
- keyA
- keyBitem wordt een paar
Met subelements is item een lijst met twee onderdelen: item.0 is het bovenliggende woordenboek en item.1 is de huidige waarde van het onderliggende item.
- ansible.builtin.debug:
msg: "{{ item.0.name }} has {{ item.1 }}"
loop: "{{ users | subelements('keys') }}"Veel SSH-sleutels autoriseren
Het klassieke voorbeeld: geef elke gebruiker al zijn SSH-sleutels. item.0.name is de gebruiker en item.1 is per iteratie één sleutel.
- ansible.posix.authorized_key:
user: "{{ item.0.name }}"
key: "{{ item.1 }}"
loop: "{{ users | subelements('keys') }}"Een onderliggend item kan een woordenboek zijn
De binnenste elementen kunnen ook woordenboeken zijn. Dan heeft item.1 eigen velden, zoals item.1.path of item.1.mode.
De iteraties tellen
Drie gebruikers met elk twee sleutels betekenen zes iteraties. subelements vermenigvuldigt bovenliggende items automatisch met hun onderliggende items.
Ontbrekende binnenste lijsten overslaan
Als bij een bovenliggend item de binnenste sleutel kan ontbreken, voeg je skip_missing toe. subelements negeert die dan stilletjes in plaats van te mislukken.
loop: "{{ users | subelements('keys', skip_missing=true) }}"Waarom niet twee keer loop?
Een taak kan niet rechtstreeks twee sleutelwoorden loop nesten. subelements is de nette, ondersteunde manier om een structuur met bovenliggende en onderliggende items in één taak te doorlopen.
Leesbaar is beter dan slim
Diep geneste gegevens kunnen moeilijk te volgen worden. Houd je structuren waar mogelijk ondiep; gebruik subelements wanneer je het echt nodig hebt.
Nog steeds idempotent
Elk paar is een afzonderlijke moduleaanroep, dus een sleutel die al aanwezig is, meldt ok. Nesting verandert niets aan veilig opnieuw uitvoeren.
Korte controle
Waar verwijst item.0 naar als je subelements gebruikt?
Samenvatting: geneste lussen
Je hebt gegevens met bovenliggende en onderliggende items met subelements vlak gemaakt, item.0 en item.1 gebruikt en ontbrekende lijsten veilig afgehandeld. Hierna: loop_control. 🎉
Leer YAML met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Geneste lussen met subelements” gratis?
Ja — de volledige tekst van “Geneste lussen met subelements” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Ansible Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Ansible Academy bevat in totaal 4 lessen.
Wat leer ik in “Geneste lussen met subelements”?
Itereer door lijsten binnen lijsten. Je oefent met Ansible Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Ansible Academy te beginnen?
Ervaring vooraf is niet nodig. Ansible Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Geneste lussen met subelements”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Ansible Academy?
Ja. Elke les over Ansible Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Het loop-trefwoord voor een lijst
- Door dictionaries itereren
- Geneste lussen met subelements
- loop_control: label, index en pauze