En aquest tema, aprendrem com utilitzar rols en els playbooks d'Ansible. Els rols són una manera d'organitzar i reutilitzar el codi d'Ansible, facilitant la gestió de configuracions complexes.

Objectius

  • Entendre la importància dels rols en Ansible.
  • Aprendre a incloure rols en un playbook.
  • Veure exemples pràctics d'ús de rols en playbooks.

Què és un Rol?

Un rol en Ansible és una col·lecció d'activitats que es poden reutilitzar en diferents playbooks. Els rols permeten estructurar el codi d'Ansible de manera modular i organitzada. Cada rol pot contenir tasques, fitxers, plantilles, variables, i més.

Estructura d'un Rol

Abans de veure com utilitzar rols en un playbook, recordem l'estructura típica d'un rol:

roles/
└── example_role/
    ├── tasks/
    │   └── main.yml
    ├── handlers/
    │   └── main.yml
    ├── templates/
    ├── files/
    ├── vars/
    │   └── main.yml
    ├── defaults/
    │   └── main.yml
    ├── meta/
    │   └── main.yml
    └── README.md

Incloent Rols en un Playbook

Per utilitzar un rol en un playbook, simplement hem d'incloure'l a la secció roles del playbook. A continuació, veurem un exemple pràctic.

Exemple de Playbook amb Rols

Suposem que tenim un rol anomenat webserver que configura un servidor web. El nostre playbook podria semblar així:

---
- name: Configurar Servidor Web
  hosts: webservers
  become: yes

  roles:
    - webserver

Explicació del Codi

  1. name: Nom del playbook.
  2. hosts: Grup d'hosts on s'executarà el playbook.
  3. become: Indica que les tasques s'executaran amb privilegis elevats (sudo).
  4. roles: Llista de rols a executar. En aquest cas, només tenim un rol anomenat webserver.

Exemple Avançat amb Múltiples Rols

Ara, suposem que volem configurar un servidor web i una base de dades. Podem utilitzar dos rols: webserver i database. El playbook podria ser així:

---
- name: Configurar Servidor Web i Base de Dades
  hosts: all
  become: yes

  roles:
    - webserver
    - database

Passant Variables als Rols

Podem passar variables específiques als rols des del playbook. Aquí teniu un exemple:

---
- name: Configurar Servidor Web amb Variables
  hosts: webservers
  become: yes

  roles:
    - role: webserver
      vars:
        http_port: 8080
        max_clients: 200

Explicació del Codi

  1. role: Nom del rol.
  2. vars: Variables específiques per a aquest rol.

Exercici Pràctic

Exercici

  1. Crea un rol anomenat nginx que instal·li i configuri Nginx.
  2. Escriu un playbook que utilitzi aquest rol per configurar Nginx en un grup d'hosts anomenat webservers.

Solució

Estructura del Rol nginx

roles/
└── nginx/
    ├── tasks/
    │   └── main.yml
    ├── templates/
    │   └── nginx.conf.j2
    └── defaults/
        └── main.yml

Fitxer tasks/main.yml

---
- name: Instal·lar Nginx
  apt:
    name: nginx
    state: present

- name: Copiar Configuració de Nginx
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf

- name: Iniciar Nginx
  service:
    name: nginx
    state: started
    enabled: yes

Fitxer defaults/main.yml

---
http_port: 80

Fitxer templates/nginx.conf.j2

server {
    listen {{ http_port }};
    server_name localhost;

    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}

Playbook site.yml

---
- name: Configurar Nginx
  hosts: webservers
  become: yes

  roles:
    - nginx

Resum

En aquesta secció, hem après com utilitzar rols en playbooks d'Ansible. Els rols ens permeten organitzar el codi de manera modular i reutilitzable, facilitant la gestió de configuracions complexes. Hem vist exemples pràctics i hem realitzat un exercici per reforçar els conceptes apresos. En el següent mòdul, explorarem tècniques avançades de playbook per optimitzar i millorar les nostres configuracions.

© Copyright 2024. Tots els drets reservats