Playbook

Plik w Ansible opisujący zestaw zadań automatyzacji w formacie YAML. Definiuje krok po kroku, jak skonfigurować i wdrożyć infrastrukturę.

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łamy
  • tasks: z modułem apt (instalacja) i service (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).