🔢 Rôles

Ces cours préparent au
Titre Professionnel "Administrateur d’infrastructures sécurisées " - RNCP37680
Reconnu par France Compétences
Présentation
Les rôles permettent de réutiliser et partager le code Ansible. Ils structurent les tâches, variables, gestionnaires et autres fichiers de manière organisée, permettant leur réutilisation dans plusieurs projets via quelques lignes de code.
Au début avec Ansible, on écrit des playbooks pour automatiser nos tâches. Le code, structuré selon les normes Ansible, peut être partagé via Ansible Galaxy.
Les rôles offrent une meilleure organisation que les playbooks seuls, ce qui devient crucial quand les projets se complexifient.
Cette approche permet une organisation logique des projets et favorise la séparation des responsabilités. Elle améliore aussi la collaboration, car les équipes peuvent travailler sur des rôles différents simultanément.
Structure de rôle Ansible
Chaque rôle a son propre répertoire contenant des sous-répertoires spécifiques selon leur fonction. Un rôle nécessite au moins un de ces répertoires standards.
On crée une structure avec
ansible-galaxy init
, inclus dans Ansible :
mkdir roles
cd roles
ansible-galaxy init wordpress
Structure créée :
wordpress/
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
└── vars
└── main.yml
Les répertoires principaux sont :
- defaults – Variables par défaut du rôle (priorité basse)
- files – Fichiers statiques utilisés par le rôle
- handlers – Gestionnaires déclenchés par les tâches
- meta - Métadonnées du rôle (dépendances, auteur, licence)
- tasks - Liste des tâches à exécuter
- templates – Modèles Jinja2
- vars – Variables du rôle (haute priorité)
Le répertoire optionnel bibliothèque peut contenir des modules et plugins personnalisés. Un fichier README.md
permet de documenter le rôle.
Création de rôles
La méthode courante est de convertir un playbook en rôle en réorganisant son contenu dans les répertoires appropriés.
Ansible cherche les rôles dans le répertoire du playbook, le dossier roles
ou via roles_path dans ansible.cfg
. Un chemin personnalisé est aussi possible :
- hosts: all
roles:
- role: "/homes/rootdev/chemin-du-role"
Ansible Galaxy
Ansible Galaxy est un référentiel en ligne pour les rôles et collections Ansible. Il permet d'obtenir rapidement des composants développés par la communauté, notamment des rôles d'entreprises comme AWS, Azure et Heroku.
La commande ansible-galaxy
, incluse avec Ansible, permet d'installer des rôles depuis Galaxy ou SCM git, de créer ou supprimer des rôles, et d'interagir avec le site Galaxy. Ce projet open-source peut être hébergé en interne.
Pour utiliser un serveur Galaxy interne, on modifie l'adresse dans ansible.cfg
:
Installation d'un rôle :
ansible-galaxy install --roles-path . nomdurole
Le rôle est téléchargé dans le répertoire .ansible
de l'utilisateur pour utilisation dans les playbooks.