Ansible - utilizare roluri

Postat la Sat 15 December 2018 in tutoriale

In Ansible, rolul e definit ca un mod de incarcare de variabile, task-uri si handlere sub forma unei structuri de fisiere predefinite.

De asemenea aceste permite distribuirea si utilizarea facila intre proiecte.

Uzual rolurile sunt definite in folderul roles din proiect

---
site.yml
webservers.yml
fooservers.yml
roles/
   common/
     tasks/
     handlers/
     files/
     templates/
     vars/
     defaults/
     meta/
   webservers/
     tasks/
     defaults/
     meta/

unde:

  • tasks - lista de comenzi ce se executa.
  • handlers - comenzi penru restartare servicii.
  • defaults - valorile implicite ale variabilelor folosite in interiorul rol.
  • vars - variabile/parametrii folositi in executia comenzilor sau la generarea fisierelor de configurare din sabloane (template),
  • files - fisiere ce sunt transferate de rol.
  • templates - sabloane folosite la generarea dinamica a diverselor fisiere de configurare utilizand variabile specifice masinii/grupului,
  • meta - informartii meta despre rol.

Fiecare din aceste foldere trebuie sa includa minim un fisier main.yml. Exemplu:

# roles/example/tasks/main.yml
- import_tasks: redhat.yml
  when: ansible_facts['os_family']|lower == 'redhat'
- import_tasks: debian.yml
  when: ansible_facts['os_family']|lower == 'debian'

# roles/example/tasks/redhat.yml
- yum:
    name: "httpd"
    state: present

# roles/example/tasks/debian.yml
- apt:
    name: "apache2"
    state: present

Structura implicita a unui rol poate fi generata facil cu comanda:

ansible-galaxy init <nume-rol>

Rolurile se includ foarte usor in playbook-uri

---
- hosts: webservers
  roles:
    - common
    - webservers

O sursa foarte uitila de de roluri este Galaxy de unde pot fi instalate in cadrul proiectului. Alternativ pot fi utilizate si git repo-uri ca sursa

Metoda pe care o recomand este:

ansible-galaxy install --roles-path ./ <nume-rol>
ansible-galaxy install --roles-path ./roles git+https://github.com/geerlingguy/ansible-role-apache.git

Articolul face parte din seria Aplicatii pentru managementul configuratiilor