Iterowanie po słownikach
Tworzenie użytkowników na podstawie danych klucz-wartość.
Iterowanie po słownikach to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 2 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 DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Listy nie wystarczą
Tworzenie użytkowników wymaga czegoś więcej niż nazwy: grupy, powłoki i stanu. Płaska lista nie może przechowywać takich danych. Potrzebna jest lista słowników. 🗂️
Lista słowników
Każdy wpis na liście staje się małym słownikiem par klucz–wartość. Dzięki temu każda iteracja pętli ma do dyspozycji kilka nazwanych pól.
loop:
- { name: alice, group: admin }
- { name: bob, group: dev }Dostęp do kluczy za pomocą item.key
Gdy item jest słownikiem, każde pole można odczytać za pomocą item.fieldname. Zatem item.name i item.group pobierają wartości z bieżącego wpisu.
- name: Add users
ansible.builtin.user:
name: "{{ item.name }}"
group: "{{ item.group }}"
loop:
- { name: alice, group: admin }
- { name: bob, group: dev }Czytelniejszy zapis wielowierszowy
Zapis z nawiasami klamrowymi w jednej linii szybko staje się nieczytelny. Jeśli wpisy mają wiele kluczy, warto zapisać każdy słownik w kilku wierszach, aby zwiększyć czytelność.
loop:
- name: alice
group: admin
shell: /bin/bash
- name: bob
group: dev
shell: /bin/zshPobieranie listy ze zmiennych
Zdefiniuj listę słowników jako zmienną, a następnie wykonaj po niej pętlę. Dane znajdują się w jednym miejscu, a zadanie pozostaje krótkie i wielokrotnego użytku.
vars:
users:
- { name: alice, group: admin }
tasks:
- ansible.builtin.user:
name: "{{ item.name }}"
loop: "{{ users }}"Iterowanie po właściwym słowniku
Aby iterować po rzeczywistym słowniku par klucz–wartość, należy przepuścić go przez filtr dict2items, dzięki czemu każda para staje się elementem możliwym do przetworzenia w pętli.
loop: "{{ ports | dict2items }}"item.key i item.value
Po użyciu dict2items każdy item udostępnia item.key i item.value — odpowiednio nazwę oraz dane z pierwotnego odwzorowania.
- ansible.builtin.debug:
msg: "{{ item.key }} = {{ item.value }}"
loop: "{{ settings | dict2items }}"Opcjonalne klucze w różnych wpisach
Nie każdy wpis musi zawierać każdy klucz. Należy połączyć pętlę z filtrem default, aby brakujące pola otrzymywały rozsądną wartość domyślną.
shell: "{{ item.shell | default('/bin/sh') }}"Słowniki porządkują dane
Grupowanie powiązanych pól dla każdego elementu pozwala zachować oddzielenie danych od logiki. Edycja użytkownika oznacza edycję danych, a nie samego zadania.
Nadal w pełni idempotentne
Każda iteracja słownika jest osobnym wywołaniem modułu, więc Ansible zgłasza changed lub ok dla każdego użytkownika, dokładnie tak jak w przypadku prostych list.
Świetne do konfiguracji zbiorczej
Użytkownicy, hosty wirtualne, reguły zapory sieciowej — wszystko, co ma kilka atrybutów dla każdego wpisu, doskonale pasuje do listy słowników.
Szybki test
Iterują Państwo po liście słowników. Jak odczytać pole?
Podsumowanie: iterowanie po słownikach
Iterowali Państwo po listach słowników, odczytywali pola item.name i używali dict2items dla rzeczywistych map. Następnie: zagnieżdżone pętle. 🎉
Często zadawane pytania
Czy lekcja „Iterowanie po słownikach” jest bezpłatna?
Tak — pełny tekst „Iterowanie po słownikach” 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 DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Iterowanie po słownikach”?
Tworzenie użytkowników na podstawie danych klucz-wartość. Ćwiczysz DevOps Bootcamp 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ąć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp 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 2 z 4.
Ile czasu zajmuje lekcja „Iterowanie po słownikach”?
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 DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp 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
- Słowo kluczowe loop dla listy
- Iterowanie po słownikach
- Zagnieżdżone pętle z subelements
- loop_control: label, index i pause