Roles et organisation 20 min de lecture

Structure d'un role Ansible

Qu'est-ce qu'un role ?

Un role est une unite de reutilisation dans Ansible. Il regroupe les taches, handlers, variables, templates et fichiers lies a une fonction specifique.

Structure d'un role

# Structure standard d'un role
roles/
  nginx/
    tasks/
      main.yml          # Taches principales
    handlers/
      main.yml          # Handlers
    templates/
      nginx.conf.j2     # Templates Jinja2
    files/
      index.html        # Fichiers statiques
    vars/
      main.yml          # Variables du role (priorite haute)
    defaults/
      main.yml          # Valeurs par defaut (priorite basse)
    meta/
      main.yml          # Metadonnees et dependances

Creer un role avec ansible-galaxy

# Initialiser la structure d'un role
ansible-galaxy init roles/nginx

# Resultat :
# roles/nginx/
#   README.md
#   defaults/main.yml
#   files/
#   handlers/main.yml
#   meta/main.yml
#   tasks/main.yml
#   templates/
#   tests/
#   vars/main.yml

Exemple de role nginx

# roles/nginx/defaults/main.yml
nginx_port: 80
nginx_worker_processes: auto
nginx_server_name: localhost

# roles/nginx/tasks/main.yml
---
- name: Installer Nginx
  apt:
    name: nginx
    state: present
    update_cache: yes

- name: Deployer la configuration
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: Redemarrer Nginx

- name: Activer et demarrer Nginx
  service:
    name: nginx
    state: started
    enabled: yes

# roles/nginx/handlers/main.yml
---
- name: Redemarrer Nginx
  service:
    name: nginx
    state: restarted
Convention : Placez les valeurs par defaut dans defaults/main.yml et les variables internes du role dans vars/main.yml.