Aller au contenu

Comment bien débuter avec Ansible ?

Ansible, quésako ?

Ansible est une plateforme d’automatisation open-source qui simplifie la gestion de la configuration, le déploiement d’applications et l’orchestration des infrastructures. En utilisant des playbooks YAML déclaratifs, Ansible permet d’automatiser efficacement des tâches complexes sur un large éventail de systèmes et de dispositifs, offrant ainsi une solution puissante et reproductible pour les opérations informatiques.

Un playbook ? C’est quoi ?

Un playbook dans Ansible est un fichier au format YAML qui définit une série d’instructions, appelées « tasks » (tâches), permettant de décrire les étapes nécessaires à l’automatisation d’une configuration système, du déploiement d’applications ou de tout autre processus d’infrastructure.

Les playbooks décrivent l’état souhaité du système, et Ansible se charge d’appliquer ces instructions de manière déclarative, assurant ainsi la cohérence et la reproductibilité des opérations sur des hôtes distants. Chaque tâche spécifiée dans un playbook peut être associée à des modules Ansible, facilitant ainsi l’automatisation de diverses actions, de la gestion de fichiers à l’installation de logiciels.

Les playbooks sont un élément clé dans la conception d’infrastructures automatisées et sont souvent utilisés pour orchestrer des opérations complexes sur un ensemble de machines.

Syntaxe d’un fichier de configuration “playbook”

Un playbook Ansible est un fichier au format YAML (YAML Ain’t Markup Language). Le format YAML est un langage de sérialisation de données qui est facile à lire et à écrire. Les playbooks sont donc écrits dans une syntaxe YAML pour décrire de manière lisible et structurée les étapes à suivre pour automatiser des tâches sur des systèmes distants.

La structure générale d’un playbook Ansible ressemble à ceci :

---
- name: Nom du playbook
  hosts: groupes_d_hotes
  become: true  # si des privilèges d'administration sont nécessaires

  tasks:
    - name: Nom de la tâche
      module_name:
        option1: valeur1
        option2: valeur2

    - name: Autre tâche
      autre_module:
        optionA: valeurA
        optionB: valeurBLangage du code : YAML (yaml)

Les éléments clés incluent :

  • name: Un nom descriptif pour le playbook ou pour chaque tâche.
  • hosts: Les groupes d’hôtes sur lesquels les tâches doivent être exécutées.
  • become: Indique si Ansible doit exécuter les tâches en tant qu’utilisateur avec des privilèges d’administration (sudo).
  • tasks: La liste des tâches à exécuter, chacune associée à un module Ansible avec ses options spécifiques.

Cette structure YAML permet de décrire de manière claire et lisible les actions à automatiser sur les hôtes cibles.

Les modules

Dans Ansible, un module est une unité d’exécution qui effectue des opérations spécifiques sur les hôtes cibles. Les modules sont les éléments de base des tâches dans un playbook. Chaque module est conçu pour accomplir une tâche particulière, telle que la gestion de fichiers, l’installation de logiciels, la configuration de services, etc.

Voici quelques exemples de modules Ansible couramment utilisés :

apt (ou yum, dnf, zypper, etc.) : Permet d’installer/désinstaller des packages sur des systèmes basés sur Debian (apt), Red Hat (yum), etc.

- name: Install Apache on RedHat systems
  yum:
    name: apache2
    state: presentLangage du code : YAML (yaml)

copy : Copie des fichiers depuis la machine de contrôle vers les hôtes cibles.

- name: Copy configuration file
  copy:
    src: /chemin/vers/source.conf
    dest: /chemin/vers/destination.confLangage du code : YAML (yaml)

service : Gère l’état des services sur les hôtes.

- name: Ensure Apache service is running
  service:
    name: apache2
    state: startedLangage du code : YAML (yaml)

Chaque module a ses propres options spécifiques, permettant de personnaliser son comportement selon les besoins de la tâche à accomplir. Les modules sont l’un des aspects clés qui rendent Ansible flexible et extensible pour l’automatisation de diverses opérations système.

Documentation officielle concernant les modules : All modules — Ansible Documentation

Les inventaires, ça fonctionne comment ?

Vous pouvez créer des inventaires qui contiendront les « hosts » où vous souhaiterez pousser vos configurations via Ansible.

Il peut s’agir de dossiers « production », « site-a », « site-b » etc… contenant un fichiers « hosts » qui contiendra la liste de vos serveurs/VMs.

Déploiement d’un playbook

Pour déployer un playbook, vous devez effectuer la commande suivante :

ansible-playbook \
  -i production/hosts \
  -l server-a \
  playbook.ymlLangage du code : Bash (bash)

Le playbook « playbook.yml » sera déployé sur le serveur « server-a » qui se trouve être un serveur de production vu qu’il est dans le fichier « hosts » qui se trouve lui même dans l’inventaire « production ».

Après cela, le playbook s’exécute et suit les différentes tâches qui se trouvent dans les différents rôles appelés par le playbook.

Des rôles et playbook sont disponibles sur Internet et sur GitHub plus précisément mais si vous souhaitez une expertise sur le sujet et un soutient dans vos projets, n’hésitez pas à me contacter.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *