Junior
De quoi se compose le rôle, quels dossiers et fichiers le constituent?
sobes.tech IA
Réponse de l'IA
Le rôle Ansible consiste en un ensemble de répertoires et de fichiers qui définissent des tâches, variables, modèles, fichiers, gestionnaires et métadonnées pour exécuter une fonction spécifique sur les nœuds gérés.
Structure principale du rôle :
defaults/: Valeurs par défaut des variables pour le rôle.vars/: Variables spécifiques au rôle. Elles remplacent les valeurs dedefaults/.tasks/: Tâches principales effectuées par le rôle. Le fichiermain.ymlest obligatoire.handlers/: Gestionnaires déclenchés lors d'événements spécifiques (par exemple, redémarrer un service). Le fichiermain.ymlest obligatoire.files/: Fichiers qui seront copiés sur les nœuds gérés.templates/: Fichiers de modèles Jinja2 qui seront copiés sur les nœuds après traitement.meta/: Informations sur le rôle : dépendances, auteur, licence. Le fichiermain.ymlest obligatoire.library/: Modules personnalisés.module_utils/: Utilitaires pour modules personnalisés.lookup_plugins/: Plugins pour la recherche.filter_plugins/: Plugins pour les filtres.
Exemple de contenu du fichier tasks/main.yml :
# tasks/main.yml
- name: Installer le serveur web Nginx
ansible.builtin.apt:
name: nginx
state: present
- name: Copier le fichier de configuration Nginx
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: Redémarrer Nginx
Exemple de contenu du fichier handlers/main.yml :
# handlers/main.yml
- name: Redémarrer Nginx
ansible.builtin.service:
name: nginx
state: restarted
Exemple de contenu du fichier templates/nginx.conf.j2 :
# templates/nginx.conf.j2
server {
listen {{ http_port }};
server_name {{ server_name }};
location / {
proxy_pass http://localhost:{{ app_port }};
}
}
Exemple de contenu du fichier defaults/main.yml :
# defaults/main.yml
http_port: 80
server_name: localhost
app_port: 8080
Le fichier meta/main.yml contient des métadonnées sur le rôle :
# meta/main.yml
galaxy_info:
author: Your Name
description: Un rôle pour installer et configurer Nginx.
license: MIT
min_ansible_version: 2.9
platforms:
- name: Debian
versions:
- all
- name: Ubuntu
versions:
- bionic
galaxy_tags: []
dependencies: []
Chaque répertoire, sauf library et module_utils, doit contenir un fichier main.yml (ou main.yaml), qui est le point d'entrée pour cette partie du rôle.