Zwracanie JSON i respektowanie changed
Przestrzeganie protokołu wyników modułu.
Zwracanie JSON i respektowanie changed 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.
Moduły komunikują się za pomocą JSON
Po zakończeniu działania moduł musi przekazać Ansible wynik w formacie JSON. Dzięki temu kontroler dowiaduje się, co wydarzyło się na hoście.
Kończ działaniem exit_json
W przypadku powodzenia należy wywołać module.exit_json. Wypisuje ono wynik jako JSON i poprawnie kończy działanie modułu, zwracając właściwy kod wyjścia.
module.exit_json(changed=True, name='web')Kluczowe znaczenie ma changed
Zawsze należy prawidłowo raportować wartość changed. Informuje ona Ansible, czy system został zmodyfikowany, i decyduje o wyświetleniu w wyniku wiersza ok lub changed.
module.exit_json(changed=False)Sprawdź stan przed zmianą
Aby poprawnie obsłużyć wartość changed, należy najpierw odczytać bieżący stan. Jeśli już odpowiada on celowi, trzeba ustawić changed=False i niczego nie zmieniać.
if current == desired:
module.exit_json(changed=False)Zwracaj dodatkowe dane
Do exit_json można dodać dowolne klucze, które pojawią się w wyniku zadania. Użytkownicy mogą później zarejestrować te dane i ponownie je wykorzystać.
module.exit_json(changed=True, user_id=42)Zgłaszaj błąd za pomocą fail_json
Gdy coś pójdzie nie tak, należy wywołać module.fail_json z jasnym komunikatem. Ansible oznaczy zadanie jako zakończone błędem i wyświetli ten tekst.
module.fail_json(msg='API request timed out')Nigdy nie używaj samego print
Nie należy używać print ani surowego stdout. Ansible oczekuje wyłącznie końcowego obiektu JSON, dlatego dodatkowy print uszkadza wynik i powoduje niepowodzenie zadania.
Tylko jedno wywołanie kończące
Każdy moduł kończy się dokładnie jednym wywołaniem exit_json lub fail_json. Oba wywołania zgłaszają SystemExit, więc kod znajdujący się za nimi nie zostanie wykonany.
Przydatny komunikat pomaga
W wynikach należy umieścić przyjazny komunikat msg opisujący wykonane działania. Dobre komunikaty zmieniają trudne do zrozumienia wykonania w czytelne wyniki.
module.exit_json(changed=True, msg='Created user web')Naśladuj działanie wbudowanych modułów
Wynik powinien przypominać wyniki modułów podstawowych: należy raportować changed, zwracać znaczące pola i wyraźnie zgłaszać błędy wraz z ich przyczyną. Spójność buduje zaufanie.
Wynik steruje wszystkim
Procedury obsługi, instrukcje warunkowe i zarejestrowane zmienne odczytują dane z JSON. Poprawne ustawienie wartości changed sprawia, że moduł właściwie współpracuje z Ansible.
Szybki sprawdzian
Proszę zastanowić się, co moduł powinien zaraportować, gdy nic nie zostało zmodyfikowane.
Podsumowanie
W przypadku powodzenia należy zakończyć działanie za pomocą exit_json, a w przypadku błędu za pomocą fail_json, uczciwie raportować changed i nigdy nie wypisywać surowego wyniku. To protokół wyników modułu. 📦
Często zadawane pytania
Czy lekcja „Zwracanie JSON i respektowanie changed” jest bezpłatna?
Tak — pełny tekst „Zwracanie JSON i respektowanie changed” 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 „Zwracanie JSON i respektowanie changed”?
Przestrzeganie protokołu wyników modułu. Ć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 „Zwracanie JSON i respektowanie changed”?
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
- Kiedy utworzyć własny moduł
- AnsibleModule i specyfikacja argumentów
- Zwracanie JSON i respektowanie changed
- Obsługa trybu check w module