defaults a vars: kolejność nadpisywania
Projektowanie przejrzystych interfejsów zmiennych ról.
defaults a vars: kolejność nadpisywania to bezpłatna lekcja Ansible Academy 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 Ansible Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ansible Academy zawiera 4 lekcji w sumie.
Dwa katalogi zmiennych
Rola może definiować zmienne w dwóch miejscach: defaults/main.yml i vars/main.yml. Wyglądają podobnie, ale działają zupełnie inaczej.
defaults mają niski priorytet
Wartości w pliku defaults/main.yml mają najniższy priorytet. Są łagodnymi sugestiami, które niemal wszystko inne może zastąpić.
# defaults/main.yml
http_port: 80
workers: 4vars mają wysoki priorytet
Wartości w pliku vars/main.yml mają wysoki priorytet. Są stanowczymi decyzjami wymaganymi przez rolę i trudno je zastąpić.
# vars/main.yml
config_path: /etc/myappdefaults są publicznym API
W sekcji defaults umieszczaj wszystko, co użytkownik może chcieć dostosować. To sygnał: można to swobodnie zmieniać. Tak projektuje się przyjazne i wielokrotnego użytku role.
vars to wewnętrzne stałe
Sekcję vars rezerwuj dla wartości niezbędnych do działania roli, których użytkownicy nie powinni zmieniać, takich jak wewnętrzna ścieżka lub stała nazwa pakietu.
Łatwo zastąp wartość domyślną
Użytkownik może zastąpić wartość z sekcji default za pomocą group_vars, host_vars, play lub wiersza poleceń. Najprostsze zastąpienie zaczyna obowiązywać natychmiast.
roles:
- role: web
vars:
http_port: 8080Zastąpienie wartości vars jest trudne
Rola vars ma wyższy priorytet niż group_vars, host_vars i zmienne play. Wyżej stoją tylko extra-vars przekazane w wierszu poleceń, dlatego vars należy stosować oszczędnie.
Extra-vars zawsze wygrywają
Zmienne przekazane za pomocą -e w wierszu poleceń mają wyższy priorytet niż wszystkie inne źródła, w tym vars roli. To ostateczne zastąpienie.
ansible-playbook site.yml -e http_port=9090Hierarchia priorytetów
Zapamiętaj tę hierarchię: na dole znajdują się defaults, wyżej zmienne inventory i play, następnie vars roli, a ponad nimi wszystkimi extra-vars.
Wskazówka projektowa
Niemal zawsze wybieraj defaults. Po vars sięgaj tylko wtedy, gdy dana wartość naprawdę musi pozostać zablokowana. Elastyczne role zadowalają zespoły.
Udokumentuj wartości domyślne
Dodaj komentarz do każdej wartości w pliku defaults/main.yml. Użytkownicy będą je dostosowywać, więc jasne objaśnienia zmienią rolę w samodokumentującą się automatyzację.
Szybki test
Zastanów się, który plik użytkownik może najłatwiej zmienić.
Podsumowanie
Używaj defaults dla wartości, które użytkownicy mogą dostosowywać, a vars — dla zablokowanych stałych wewnętrznych. Extra-vars w CLI mają wyższy priorytet niż wszystko inne. 🎚️
Ucz się YAML dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „defaults a vars: kolejność nadpisywania” jest bezpłatna?
Tak — pełny tekst „defaults a vars: kolejność nadpisywania” 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 „defaults a vars: kolejność nadpisywania”?
Projektowanie przejrzystych interfejsów zmiennych ról. Ć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 2 z 4.
Ile czasu zajmuje lekcja „defaults a vars: kolejność nadpisywania”?
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
- Zależności ról w meta/main.yml
- defaults a vars: kolejność nadpisywania
- include_role i import_role w czasie działania
- allow_duplicates i idempotencja ról