Ansible - utilizare playbook-uri

Postat la Sat 03 November 2018 in tutoriale

In documentatia oficiala de la ansible, playbook-urile (playbooks) e definit ca limbaj de configuare, deploy si orchestrare (administrare daca doriti).

Playbook-urile sunt fisiere in format yaml care pot fi usor de parcurs si inteles si pe care ansible executa instructiunile - comenzile - in ordinea descrisa.

Un exemplu (apache.yml):

---
- hosts: webservers
  vars:
    http_port: 80
    max_clients: 200
  remote_user: ubuntu
  became: yes
  tasks:
    - name: ensure apache is at the latest version
      yum:
        name: httpd
        state: latest
    - name: write the apache config file
      template:
        src: /srv/httpd.j2
        dest: /etc/httpd.conf
      notify:
      - restart apache
    - name: ensure apache is running
      service:
        name: httpd
        state: started
  handlers:
    - name: restart apache
      service:
        name: httpd
        state: restarted

unde:

  • hosts - masina sau grupul de masini unde executam comenzile,
  • vars - variabile/parametrii folositi in executia comenzilor sau la generarea fisierelor de configurare din sabloane (template),
  • remote_user - utlizatorul folosit la conectarea prin SSH; poate fi definit in ansible.cfg sau in inventory la nivel de masina,
  • became - daca dorim executia comenzilor ca root,
  • tasks - lista de comenzi ce se executa.

Lista de task-uri (comenzi) sunt executate in ordine, una cate una la toate masinile definite in paramtrul hosts, iar in cazul cand o comanda esueaza pe o masina pe aceasta nu se mai executa restul comenzilor din lista.

tasks:
  - name: ensure apache is at the latest version
    yum:
      name: httpd
      state: latest

Task-urile sunt definite prin:

  • name - descriere sugestiva a comenzii ce se executa,
  • modulul utilizat cu parametrii specifici conform documentatiei

Parametrii de executie pot fi definiti ca si cheie=valoare:

tasks:
  - name: ensure apache is at the latest version
    yum: name=httpd state=latest

Rularea playbook-urilor este simpla:

ansible-playbook apache.yml

ori daca dorim sa limitam executia lui doar la o masina din grup:

ansible-playbook apache.yml --limit server2

Articolul face parte din seria Aplicatii pentru managementul configuratiilor