Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
  • Loading branch information
gfaivre committed Jan 31, 2024
1 parent fddd45d commit e92211b
Showing 1 changed file with 35 additions and 5 deletions.
40 changes: 35 additions & 5 deletions content/blog/cours/ansible/ansible-les-roles.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
type: "post"
title: "Ansible - Roles et collections, savoir factoriser."
date: "2024-01-19"
date: "2024-02-02"
lastModified: ~
tableOfContent: true
description: "Automatiser c'est bien, faire en sorte que cela soit réutilisable simplement c'est mieux. Mise en oeuvre des collections et roles avec Ansible."
Expand Down Expand Up @@ -71,11 +71,11 @@ En effet nos playbooks contiennent de nombreuses instructions qui bien que liée
Il est donc plus que temps d'intégrer le concept de role et plus largement de collection.
## Role
## Les rôles
Au sens Ansible un role est assimilable à un regroupement de tâches dont (normalement) la finalité s'oriente vers le même objectif. On peut ainsi s'imaginer un rôle dédié à la gestion de notre serveur web Nginx.
Au sens Ansible un rôle est assimilable à un regroupement de tâches dont (normalement) la finalité s'oriente vers le même objectif. On peut ainsi s'imaginer un rôle dédié à la gestion de notre serveur web Nginx.
La structure d'un role est très similaire à l'organisation que l'on a pu voir jusqu'à présent, on retrouvera ainsi une arborescence comme suit:
La structure d'un rôle est très similaire à l'organisation que l'on a pu voir jusqu'à présent, on retrouvera ainsi une arborescence comme suit:
```yaml

Expand All @@ -101,5 +101,35 @@ roles/
lookup_plugins/ # or other types of plugins, like lookup in this case
```

Ansible prévoit donc un répertoire dédié aux roles dans lequel nous retrouverons un répertoire par role, chacune de ces rôles obéissant à la structure définie ci-dessus.
Ansible prévoit donc un répertoire dédié aux rôles dans lequel nous retrouverons un répertoire par rôle, chacune de ces rôles obéissant à la structure définie ci-dessus.

!!! info "Structure d'un rôle"
Un rôle doit contenir au moins un des répertoires de l'arborescence ci-dessus. À l'inverse si certains répertoires ne sont pas nécessaire à son fonctionnement, ils peuvent être omis.
Par défaut Ansible « recherchera » les instructions d'un répertoire dans un fichier `main.yml`.

Ansible par défaut « recherchera » des rôles à différents endroits:

- Dans l'emplacement destiné aux **collections** (dont nous parlerons juste après);
- Dans un répertoire `roles` relativement à la position de notre fichier de playbook;
- À partir de la clé `role_path` configurable notamment dans le fichier de configuration `ansible.cfg`;
- Et pour finir dans le répertoire ou se trouve le playbook.

### Créer son premier rôle

Reprenons nos travaux précédent, nous avions au final plusieurs tâches chacune chargée de faire des choses bien différentes (Nginx, PHP, motd...)
Notre objectif pour cette fois sera de refactoriser ces sections de manière à les transformer en rôles.

#### Motd

Rien de bien compliqué pour commencer, créons notre arborescence dans un répertoire `roles` à la racine de notre répertoire de travail en y ajoutant un répertoire `motd`.
Dans ce dernier nous allons ensuite créer les répertoires `tasks` et `templates`

À l'intérieur du répertoire `tasks` nous allons donc créé un fichier `main.yml` qui contiendra nos principales tâches


## Aller plus loin avec les sources

- https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html
- https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html#embedding-modules-and-plugins-in-roles


0 comments on commit e92211b

Please sign in to comment.