Sobes.tech
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 de defaults/.
  • tasks/ : Tâches principales effectuées par le rôle. Le fichier main.yml est obligatoire.
  • handlers/ : Gestionnaires déclenchés lors d'événements spécifiques (par exemple, redémarrer un service). Le fichier main.yml est 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 fichier main.yml est 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.