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