Les roles Ansible sont l’equivalent des modules dans un langage de programmation. Ils encapsulent une responsabilite et sont reutilisables.
Structure d’un role
roles/nginx/
|-- tasks/
| +-- main.yml
|-- handlers/
| +-- main.yml
|-- templates/
| +-- nginx.conf.j2
|-- files/
|-- vars/
| +-- main.yml
|-- defaults/
| +-- main.yml
|-- meta/
| +-- main.yml
+-- README.md
Creer un role avec ansible-galaxy
ansible-galaxy role init mon-role
Un role nginx minimal
# tasks/main.yml
- name: Installer nginx
package:
name: nginx
state: present
- name: Deployer la configuration
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: restart nginx
- name: Activer nginx
service:
name: nginx
state: started
enabled: true
# handlers/main.yml
- name: restart nginx
service:
name: nginx
state: restarted
Utiliser des roles depuis Galaxy
# Installer un role
ansible-galaxy install geerlingguy.docker
# requirements.yml
roles:
- name: geerlingguy.docker
version: 7.0.2
- name: geerlingguy.nginx
version: 3.2.0
ansible-galaxy install -r requirements.yml
Publier son role sur Galaxy
# meta/main.yml
galaxy_info:
author: votre-nom
description: Role pour configurer nginx
license: MIT
min_ansible_version: "2.12"
platforms:
- name: Ubuntu
versions: ["22.04", "24.04"]
galaxy_tags: ["nginx", "web", "proxy"]
Notre formation Ansible couvre la creation de roles avances.