0Pricing
Ansible Academy · Lekcja

Zagnieżdżone pętle z subelements

Iterowanie po listach zagnieżdżonych w innych listach.

Zagnieżdżone pętle z subelements to bezpłatna lekcja Ansible Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ansible Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ansible Academy zawiera 4 lekcji w sumie.

Listy wewnątrz list

Czasami każdy element ma własną listę: użytkownik z kilkoma kluczami SSH albo grupa z wieloma członkami. Jest to struktura zagnieżdżona. 🪆

Mechanizm wyszukiwania subelements

Mechanizm wyszukiwania subelements łączy każdego elementu nadrzędnego z każdym elementem podrzędnym z jego wewnętrznej listy, spłaszczając zagnieżdżenie do pojedynczych iteracji.

loop: "{{ users | subelements('keys') }}"

Dwa argumenty

subelements przyjmuje listę elementów nadrzędnych oraz nazwę wewnętrznego klucza, który ma zostać rozwinięty. Tworzy jedną iterację dla każdego elementu podrzędnego.

vars:
  users:
    - name: alice
      keys:
        - keyA
        - keyB

item staje się parą

W przypadku subelements item jest dwuelementową listą: item.0 to słownik elementu nadrzędnego, a item.1 to bieżąca wartość podrzędna.

- ansible.builtin.debug:
    msg: "{{ item.0.name }} has {{ item.1 }}"
  loop: "{{ users | subelements('keys') }}"

Autoryzowanie wielu kluczy SSH

Klasyczny przypadek: przekazanie każdemu użytkownikowi wszystkich jego kluczy SSH. item.0.name to użytkownik, a item.1 to jeden klucz w każdej iteracji.

- ansible.posix.authorized_key:
    user: "{{ item.0.name }}"
    key: "{{ item.1 }}"
  loop: "{{ users | subelements('keys') }}"

Element podrzędny może być słownikiem

Elementy wewnętrzne również mogą być słownikami. Wtedy item.1 ma własne pola, takie jak item.1.path lub item.1.mode.

Liczenie iteracji

Trzech użytkowników z dwoma kluczami każdy oznacza sześć iteracji. subelements automatycznie mnoży liczbę elementów nadrzędnych przez liczbę ich elementów podrzędnych.

Pomijanie brakujących list wewnętrznych

Jeśli elementowi nadrzędnemu może brakować wewnętrznego klucza, należy dodać skip_missing, aby subelements po cichu go pominął zamiast zgłaszać błąd.

loop: "{{ users | subelements('keys', skip_missing=true) }}"

Dlaczego nie dwie pętle?

Nie można bezpośrednio zagnieździć dwóch słów kluczowych loop w jednym zadaniu. subelements to właściwy i obsługiwany sposób przechodzenia po strukturze nadrzędny–podrzędny w jednym zadaniu.

Czytelność ważniejsza niż spryt

Głęboko zagnieżdżone dane mogą być trudne do zrozumienia. Jeśli to możliwe, należy utrzymywać płytkie struktury, a po subelements sięgać tylko wtedy, gdy jest rzeczywiście potrzebne.

Nadal idempotentne

Każda para jest osobnym wywołaniem modułu, więc dodanie już istniejącego klucza zgłasza ok. Zagnieżdżenie nie zmienia bezpieczeństwa ponownego uruchamiania.

Szybki test

Podczas używania subelements, do czego odnosi się item.0?

Podsumowanie: zagnieżdżone pętle

Spłaszczyli Państwo dane nadrzędne–podrzędne za pomocą subelements, użyli item.0 i item.1 oraz bezpiecznie obsłużyli brakujące listy. Następnie: loop_control. 🎉

Często zadawane pytania

Czy lekcja „Zagnieżdżone pętle z subelements” jest bezpłatna?

Tak — pełny tekst „Zagnieżdżone pętle z subelements” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ansible Academy, przejdź na CoddyKit PRO. Kurs Ansible Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zagnieżdżone pętle z subelements”?

Iterowanie po listach zagnieżdżonych w innych listach. Ćwiczysz Ansible Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Ansible Academy?

Nie wymagamy żadnego doświadczenia. Ansible Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Zagnieżdżone pętle z subelements”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Ansible Academy?

Tak. Każda lekcja Ansible Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Słowo kluczowe loop dla listy
  2. Iterowanie po słownikach
  3. Zagnieżdżone pętle z subelements
  4. loop_control: label, index i pause
← Powrót do Ansible Academy