Generator playbooka Ansible
Złóż playbook Ansible w YAML: Nginx, Docker, PostgreSQL i użytkownicy z kluczami SSH.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Opcje
Playbook Ansible to plik YAML opisujący pożądany stan serwera. Każde zadanie korzysta z modułu (np. apt, service, user) i jest idempotentne — wielokrotne uruchomienie nie psuje systemu. Sekcja handlers uruchamia się tylko wtedy, gdy zadanie zgłosi zmianę (np. restart Nginx po zmianie konfiguracji).
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator playbooka Ansible — konfiguracja serwera opisana w YAML
Generator playbooka Ansible składa gotowy plik YAML, w którym pojedynczy play opisuje pożądany stan serwera: grupę hostów, tryb become, listę zadań i sekcję handlers. Zaznaczasz, które role mają być wdrożone — Nginx, Docker, PostgreSQL, użytkownicy z kluczami SSH — a narzędzie generuje kompletny playbook.yml, który uruchomisz poleceniem ansible-playbook.
Czym jest playbook i co dokładnie robi to narzędzie
Ansible zarządza serwerami bez agenta: łączy się przez SSH i wykonuje moduły Pythona na zdalnej maszynie. Playbook to plik YAML, który opisuje stan docelowy, a nie kolejne komendy. Podajesz nazwę playbooka i grupę hostów z inventory, wybierasz zadania i dostajesz strukturę: - name, hosts, become, gather_facts, tasks oraz — gdy trzeba — handlers. Grupa hostów jest wymagana: bez wpisu hosts Ansible nie wie, na czym uruchomić play, więc narzędzie zgłasza wtedy błąd zamiast tworzyć niekompletny plik.
Playbook to jeden z trzech filarów wdrożenia. Listę serwerów opisuje inventory, obraz aplikacji zbudujesz w generatorze Dockerfile, a jeśli wdrażasz na klaster, manifest przygotujesz w generatorze deploymentu Kubernetes.
Presety: serwer www, host Docker, baza danych
Trzy przyciski szybkiego startu ustawiają nazwę, grupę hostów i zestaw zadań pod typowe role. Serwer www to Nginx plus użytkownicy w grupie webservers. Docker instaluje i uruchamia usługę Docker dla grupy dockers. Baza danych stawia PostgreSQL wraz z kontem wdrożeniowym dla grupy databases. Preset to punkt wyjścia — po kliknięciu możesz dowolnie dołożyć lub odjąć zadania.
Zadania w wygenerowanym playbooku
| Zadanie | Moduły i co ustawia |
|---|---|
| Nginx | Instalacja przez apt i wgranie konfiguracji przez template z nginx.conf.j2 |
| Docker | Instalacja docker.io oraz włączenie i start usługi przez service |
| PostgreSQL | Instalacja postgresql i uruchomienie usługi z enabled: true |
| Użytkownicy | Konto deploy w grupie sudo i dodanie klucza przez authorized_key |
Zadania zawsze trafiają do pliku w stałej kolejności (Nginx, Docker, PostgreSQL, użytkownicy), niezależnie od tego, w jakiej kolejności je zaznaczysz. Puste zaznaczenie to błąd — tasks nie może być pustą sekcją, bo Ansible odrzuca play bez zadań.
Idempotencja — dlaczego można uruchamiać wielokrotnie
Każdy moduł sprawdza aktualny stan i działa tylko wtedy, gdy trzeba. state: present instaluje pakiet, jeśli go nie ma, a przy kolejnym uruchomieniu nic nie zmienia. Dzięki temu ten sam playbook możesz odpalać wiele razy i serwer nie zostanie zepsuty ani nie zmieni się „w drugą stronę”. To fundamentalna różnica względem skryptu powłoki, który przy powtórce często dubluje wpisy albo wywala się na już istniejących zasobach.
Handlery — restart tylko po realnej zmianie
Sekcja handlers to akcje uruchamiane wyłącznie wtedy, gdy zadanie zgłosi zmianę przez notify. Klasyczny przykład to restart Nginx po podmianie pliku konfiguracyjnego: jeśli konfiguracja się nie zmieniła, handler się nie odpala i usługa działa bez przerwy. Narzędzie pilnuje spójności: handler Restart Nginx oraz odsyłające do niego notify pojawiają się tylko razem i tylko przy zadaniu Nginx. Odznaczenie opcji handlerów usuwa oba wpisy naraz, więc w pliku nie zostanie notify wskazujący na nieistniejący handler — a to właśnie ten scenariusz kończy się błędem The requested handler was not found.
Jak uruchomić playbook
- Zapisz wynik jako
playbook.yml. - Przygotuj plik inventory z hostami, np. grupę
[webservers]odpowiadającą polu „grupa hostów”. - Zrób próbę na sucho:
ansible-playbook -i inventory.ini playbook.yml --check --diffpokaże planowane zmiany bez ich wprowadzania. - Uruchom właściwie:
ansible-playbook -i inventory.ini playbook.yml. - Sprawdź poprawność składni YAML — wcięcia w Ansible są znaczące — w walidatorze YAML.
~/.ssh/id_rsa.pub maszyny sterującej przez lookup('file', ...). Upewnij się, że ten plik istnieje i zawiera właściwy klucz, zanim odpalisz playbook — inaczej konto deploy powstanie bez dostępu SSH.become, gather_facts i grupa hostów
Opcja become podnosi uprawnienia do roota (odpowiednik sudo) i jest potrzebna do instalacji pakietów czy zarządzania usługami. gather_facts włącza zbieranie informacji o zdalnej maszynie (system, wersje, interfejsy), które możesz wykorzystać w szablonach i warunkach; przy prostych playbookach można je wyłączyć dla szybszego startu. Grupa hostów łączy playbook z inventory — jeśli budujesz playbooki dla wielu ról, warto trzymać spójne nazwy grup (webservers, dockers, databases) i te same nazwy odwzorować w generatorze playbooków Ansible oraz w pliku inventory.
Najczęściej zadawane pytania
Czym jest inventory i skąd bierze się „grupa hostów”?
Inventory to plik z listą serwerów pogrupowanych w sekcje, np. [webservers]. Wartość z pola „grupa hostów” trafia do klucza hosts playbooka i musi pasować do nazwy grupy w inventory. Inventory może być statyczny (plik INI/YAML) albo dynamiczny (skrypt zwracający listę hostów z chmury).
Czy Ansible wymaga agenta na serwerze?
Nie. Ansible łączy się przez SSH i korzysta z Pythona obecnego na zdalnej maszynie. Nie instalujesz żadnej usługi po stronie serwera docelowego — cała logika działa z maszyny sterującej.
Jak bezpiecznie przetestować playbook przed wdrożeniem?
Uruchom go z flagą --check (tryb próbny, bez zmian) i --diff, aby zobaczyć, co zostałoby zmienione. Warto też sprawdzić składnię YAML w walidatorze — błędne wcięcie potrafi zmienić znaczenie całego pliku.
Dlaczego usunięcie handlerów zabrało też wpisy notify?
Bo notify bez pasującego handlera przerywa wykonanie błędem „handler not found”. Narzędzie traktuje handler i odsyłające do niego notify jako parę: pojawiają się i znikają razem, i tylko przy zadaniu Nginx, które ten handler wywołuje.
Co oznacza „idempotentny” w kontekście Ansible?
Że wielokrotne uruchomienie tego samego playbooka daje ten sam stan serwera. Moduł najpierw sprawdza, czy zmiana jest potrzebna, i działa tylko wtedy, gdy jest. Dlatego playbook można odpalać w kółko bez ryzyka zdublowania konfiguracji.