Ansible · Roles

Roles

Organisez tâches, handlers, variables, templates et fichiers dans des rôles réutilisables et lisibles.

Leçon disponible
20 min

Objectifs

  • Expliquer l’intérêt d’un rôle.
  • Identifier tasks, handlers, defaults, vars, templates, files et meta.
  • Appeler un rôle depuis un playbook.
  • Initialiser une structure avec ansible-galaxy sans télécharger de contenu.

Structurer avec les rôles

Un rôle découpe une automatisation par responsabilité, par exemple nginx, database ou monitoring. Il fournit une convention de dossiers que l’équipe peut relire, tester et réutiliser.

Un rôle local peut être créé sans contacter Galaxy. Ansible Galaxy désigne aussi un service et des commandes de partage de rôles et collections ; auditez toute dépendance externe avant de l’adopter.

Arborescence d’un rôle

Chaque dossier possède une responsabilité. Le fichier main.yml sert généralement de point d’entrée dans le dossier lorsqu’il existe.

  • tasks : actions principales du rôle.
  • handlers : actions notifiées, comme un reload.
  • defaults : valeurs de repli à faible précédence.
  • vars : variables internes à plus forte précédence, à utiliser avec retenue.
  • templates : modèles Jinja ; files : fichiers copiés tels quels.
  • meta : métadonnées et dépendances du rôle.
Structure du rôle nginx
roles/
└── nginx/
    ├── defaults/
    │   └── main.yml
    ├── files/
    ├── handlers/
    │   └── main.yml
    ├── meta/
    │   └── main.yml
    ├── tasks/
    │   └── main.yml
    ├── templates/
    └── vars/
        └── main.yml

Initialiser localement un rôle

La commande role init crée l’arborescence de base dans le répertoire demandé. Elle ne configure aucun serveur et ne télécharge pas de rôle distant.

Créer la structure locale
ansible-galaxy role init roles/nginx

Cette leçon affiche la commande uniquement. Aucun accès Galaxy, réseau, SSH ou Ansible n’est lancé par IT Toolbox AI.

Appeler un rôle depuis un play

Le playbook reste court : il décrit la cible et délègue la configuration au rôle. Les valeurs personnalisables se placent de préférence dans defaults puis sont surchargées depuis l’inventory ou le play.

  • Un rôle traite une responsabilité cohérente.
  • Exposez des defaults documentés plutôt que de coder les valeurs en dur.
  • Préfixez les variables pour réduire les collisions, par exemple nginx_listen_port.
  • Fixez et révisez les versions des rôles ou collections externes.
site.yml
---
- name: Configurer les serveurs web
  hosts: web
  become: true
  roles:
    - role: nginx
      vars:
        nginx_listen_port: 8080

Mini résumé

  • Les rôles fournissent une convention de structure réutilisable.
  • tasks, handlers, defaults, vars, templates, files et meta ont chacun un rôle précis.
  • Un play appelle un rôle avec roles et peut lui passer des variables.
  • Les dépendances Galaxy externes doivent être versionnées et auditées.

Outils associés

Générer un playbook Ansible

Utilisez Ansible Playbook Generator pour préparer une base YAML locale, puis relisez et adaptez chaque tâche avant utilisation.

Ouvrir l’outil

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. Quel dossier contient les valeurs de repli faciles à surcharger ?
2. Où place-t-on généralement les modèles Jinja d’un rôle ?
3. Que fait ansible-galaxy role init roles/nginx ?