Skip to main content
În această lecție ne concentrăm pe una dintre cele mai importante părți din Ansible: playbook-urile. Dacă înțelegi cum se construiesc și cum se execută playbook-urile, ai o fundație solidă pentru a automatiza aproape orice infrastructură sau aplicație. Ce este un playbook? Gândește-l ca pe un blueprint pentru automatizare. Un playbook Ansible nu este doar un script procedural, ci o descriere declarativă a stării finale dorite pentru sistemele tale. Ansible citește acest fișier YAML și aplică schimbările necesare pentru ca gazdele țintă să ajungă în starea descrisă. Fiind scris în YAML, playbook-urile sunt ușor de citit, revizuit și versionat.
A presentation slide titled "What Is a Playbook?" showing four numbered cards: 01 Blueprint, 02 Desired state, 03 YAML file, and 04 Human-readable and repeatable, each with a small icon. The layout explains key characteristics of a playbook.
De ce folosim playbook-uri? Playbook-urile sunt fundamentale pentru automatizare, iar principalele beneficii sunt:
  • Consistență: aceeași configurație aplicată identic pe toate gazdele.
  • Economie de timp: schimbări la scară realizate dintr-un singur fișier.
  • Siguranță și idempotentă: Ansible nu reaplică modificări dacă resursa este deja în starea dorită.
  • Documentare integrată: fișierele YAML descriu clar ce se face, reprezentând atât documentație, cât și automatizare.
A presentation slide titled "Playbooks – Benefits" displaying four blue-green circular icons across the bottom. The icons are labeled "Consistency", "Saves time", "Safe and idempotent", and "Readable".
Structura de bază a unui playbook Un playbook tipic respectă această schemă:
  • Fișier YAML care începe cu trei liniuțe (---).
  • Top-level este o listă de “play”-uri. Fiecare play include:
    • hosts: gazdele țintă sau grupurile din inventory
    • become: dacă sunt necesare privilegii elevate
    • tasks: lista de acțiuni (folosind modulele Ansible)
  • Opțional: vars, handlers, roles, templates, etc.
Exemplu minimal, corect structurat:
---
- name: Exemplu de play
  hosts: all
  become: true
  tasks:
    - name: Creează un fișier gol pe host
      file:
        path: /tmp/exemplu.txt
        state: touch
Dacă reții această structură — listă de play-uri la nivel superior, fiecare cu hosts, opțiuni și tasks — ai deja baza necesară pentru majoritatea scenariilor. Restul constructelor (variabile, handleri, roluri) se adaugă peste acest schelet. Componentele unui playbook Mai jos găsești componentele cheie și rolul lor în playbook:
ComponentăCe faceExemplu / Observație
TasksPași individuali care folosesc module- name: Install nginx
ModuleUnități reutilizabile (file, service, package, template)Ex: apt, yum, copy, template
HandlersSe execută doar dacă un task a raportat changedFolosit pentru restarturi: notify: Restart nginx
RolesStructură pentru organizare (tasks, templates, vars, handlers)Recomandat pentru proiecte mari
VariablesFac playbook-urile parametrizabileVars la nivel de play, host sau external vars files
Loops & ConditionalsRepetare și execuție condiționată a task-urilorwith_items, loop, when
A presentation slide titled "Playbook Components" on a dark teal background showing two columns of boxed items with icons: left column lists Tasks, Modules, and Handlers; right column lists Roles, Variables, and Loops & Conditionals.
Cum rulezi un playbook Comanda de bază pentru a executa un playbook este:
ansible-playbook site.yml
Înainte de a rula într-un mediu real, folosește verificarea de sintaxă pentru a detecta erori YAML sau probleme de structură fără a aplica schimbări:
ansible-playbook --syntax-check site.yml
Rularea —syntax-check te ajută să detectezi erori de indentare sau probleme de format YAML înainte de a executa playbook-ul în producție.
Bune practici pentru playbook-uri clare și fiabile
  • Folosește întotdeauna câmpul name pentru fiecare task — ajută la înțelegerea și debugging.
  • Verifică sintaxa înainte de execuție (--syntax-check).
  • Utilizează handlers pentru operațiuni cum ar fi restartarea serviciilor; se vor rula doar când un task schimbă ceva.
  • Evită duplicarea: folosește variabile, templates Jinja2 și loops în loc să copiezi același task.
  • Structurează automatizarea în roluri pe măsură ce playbook-urile devin mai complexe.
  • Testează în medii de staging înainte de a aplica în producție.
Exemplu scurt cu handler:
---
- name: Configure web server
  hosts: web
  become: true
  tasks:
    - name: Copiază fișierul de configurare
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: Restart nginx

  handlers:
    - name: Restart nginx
      service:
        name: nginx
        state: restarted
În acest exemplu, handler-ul “Restart nginx” se va declanșa doar dacă task-ul template raportează changed, prevenind repornirile inutile. Concluzie Acestea sunt elementele fundamentale pentru a începe să scrii playbook-uri Ansible eficiente. Odată ce stăpânești structura de bază (play → hosts → tasks) și conceptele importante (module, handlers, roles, variables, loops & conditionals), poți construi automatizări reproducibile, sigure și ușor de întreținut.
Începe simplu, structurează treptat în roluri și folosește verificări înainte de execuție pentru a menține automatizarea fiabilă și ușor de întreținut.
Links și resurse utile

Watch Video