0Pricing
DevOps Bootcamp · Lekcja

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/zsh

Pobieranie 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

  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 DevOps Bootcamp