Playbook to plik w formacie YAML, w którym opisujesz — krok po kroku — co Ansible ma zrobić na Twoich serwerach. Zamiast logować się ręcznie na każdą maszynę i klepać te same komendy, spisujesz cały scenariusz raz: jakie pakiety zainstalować, które usługi uruchomić, jak skonfigurować pliki. Potem odpalasz playbook i Ansible wykonuje to na wszystkich hostach naraz. To podejście nazywa się Infrastructure as Code — Twoja infrastruktura żyje w repozytorium git, a nie w głowie jednego admina, który akurat poszedł na urlop.
Jak to działa
Playbook składa się z jednej lub kilku play — każda przypisuje zestaw zadań do wybranej grupy hostów (np. webservers z pliku inventory). Wewnątrz play masz listę tasks, a każde zadanie wywołuje konkretny moduł (np. apt, copy, service). Ansible wykonuje zadania po kolei, w tej samej kolejności, w jakiej je zapisałeś.
Kluczowa cecha to idempotentność: możesz uruchomić ten sam playbook dziesięć razy, a stan serwera będzie taki sam jak po pierwszym. Ansible najpierw sprawdza, czy coś trzeba zmienić — jeśli usługa już działa, to jej nie restartuje bez powodu. Dlatego playbook opisuje stan docelowy, a nie ślepą sekwencję komend.
Przykład z praktyki
Załóżmy, że stawiasz nginx na grupie serwerów. Tworzysz site.yml:
- hosts: webservers— na czym działamytasks:z modułemapt(instalacja) iservice(uruchomienie)
Potem odpalasz: ansible-playbook -i inventory site.yml. Dobry nawyk to wcześniejszy dry-run z flagą --check, żeby zobaczyć, co playbook chciałby zmienić, zanim faktycznie to zrobi na produkcji.
Na co uważać
YAML jest wrażliwy na wcięcia — jedna spacja za dużo i dostajesz błąd składni zamiast działającego wdrożenia. Używaj spacji, nigdy tabów. Drugi częsty błąd to mylenie pojęć: playbook to nie to samo co role (rola to wielokrotnego użytku, pogrupowany zestaw zadań, którą playbook tylko wywołuje) ani co inventory (lista hostów). I nie wrzucaj haseł na sztywno do playbooka — od tego jest ansible-vault.
Pojęcia powiązane
Ansible, YAML, Infrastructure as Code, idempotentność, inventory, role, moduły, ansible-vault, Terraform (provisioning infrastruktury, często używany razem z Ansible).