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.