Aller au contenu

Apprendre Ansible 🚀 | Automatiser ses serveurs Linux

Mise Ă  jour :

Logo Ansible

Ansible est devenu un outil incontournable dans le domaine du DevOps et il suffit de regarder le nombre d’offres d’emploi exigeant sa connaissance pour s’en convaincre. Conçu pour ĂȘtre simple et efficace, Ansible se distingue par sa capacitĂ© Ă  simplifier des processus complexes, rendant l’automatisation accessible mĂȘme aux dĂ©butants.

Ce qui n’était au dĂ©part qu’un simple pense-bĂȘte pour moi est devenu, au fil du temps, une Formation Ansible complĂšte, conçue pour vous guider dans la maĂźtrise de cet outil d’automatisation. Mon amour pour Ansible est nĂ© dĂšs ses dĂ©buts en 2012, lorsqu’il a Ă©tĂ© créé pour rĂ©pondre au besoin d’un outil capable de faciliter la vie des administrateurs systĂšme tout en Ă©tant facilement comprĂ©hensible par ceux qui dĂ©butent dans le domaine de l’automatisation.

C’est pour cette raison que j’ai dĂ©cidĂ© de consacrer une partie de mon parcours Ă  partager mon expertise Ă  travers une Formation Ansible approfondie, afin de transmettre non seulement les compĂ©tences techniques, mais aussi la passion que j’ai pour cet outil qui transforme le monde du DevOps.

Origine et Evolution d’Ansible

La genĂšse d’Ansible est un rĂ©cit fascinant de rĂ©ponse Ă  un besoin croissant dans le domaine de l’IT. Créé en 2012 par Michael DeHaan, Ansible est nĂ© de la volontĂ© de fournir un outil d’automatisation plus simple et plus sĂ©curisĂ© que ceux existants Ă  l’époque. DeHaan, ayant dĂ©jĂ  une expĂ©rience notable dans le dĂ©veloppement d’outils d’automatisation, a su identifier les lacunes des solutions existantes et a conçu Ansible pour les combler.

DĂšs ses dĂ©buts, Ansible s’est distinguĂ© par sa facilitĂ© d’utilisation. Contrairement Ă  d’autres outils nĂ©cessitant une installation complexe et une configuration lourde, Ansible a Ă©tĂ© dĂ©veloppĂ© dans l’optique d’ĂȘtre lĂ©ger et facile Ă  mettre en Ɠuvre. Cette approche a rapidement sĂ©duit la communautĂ© IT et l’outil a gagnĂ© en popularitĂ©, se forgeant une rĂ©putation de solution d’automatisation fiable et efficace.

L’évolution d’Ansible a Ă©tĂ© marquĂ©e par un engagement constant envers la sĂ©curitĂ© et la simplicitĂ©, tout en s’adaptant aux besoins changeants des professionnels de l’IT. Son dĂ©veloppement a Ă©tĂ© fortement influencĂ© par sa communautĂ© d’utilisateurs, une communautĂ© active et engagĂ©e qui a contribuĂ© Ă  l’enrichissement constant du logiciel par de nouvelles fonctionnalitĂ©s et amĂ©liorations.

En 2015, Red Hat, une grande entreprise dans le monde du logiciel libre, a acquis Ansible, marquant une Ă©tape importante dans son histoire. Cette acquisition a non seulement renforcĂ© la position d’Ansible sur le marchĂ©, mais a Ă©galement ouvert la voie Ă  de nouvelles opportunitĂ©s de dĂ©veloppement et d’intĂ©gration avec d’autres produits et services de Red Hat.

Aujourd’hui, Ansible est considĂ©rĂ© comme une solution clĂ© dans le domaine de l’automatisation des IT. Sa capacitĂ© Ă  Ă©voluer tout en restant fidĂšle Ă  ses principes de base – simplicitĂ©, efficacitĂ© et sĂ©curitĂ© – continue de lui valoir la confiance et la fidĂ©litĂ© des professionnels Ă  travers le monde.

Cas d’Usage d’Ansible

Dans cette formation, nous n’aborderons qu’Ansible. Ansible fait partie d’un ensemble d’application appelĂ© Ansible Automation Platform ↗ qui Ă©tend son champ d’action Ă  la gestion de WorkFlows Complexes, mais pas que.

En effet, Ansible offre une grande flexibilitĂ© et s’adapte Ă  divers scĂ©narios. Ses applications vont de l’automatisation de dĂ©ploiements Ă  la gestion de configurations, en passant par l’orchestration de tĂąches et la gestion d’évĂ©nements.

Ansible est souvent utilisé conjointement avec Terraform, terraform étant spécialisé lui dans le provisionning de ressources cloud. Une fois les ressources provisionnées, Ansible prend le relais pour configurer les serveurs. Vous trouverez, en suivant le lien suivant une formation complÚte sur Terraform.

  1. Automatisation des DĂ©ploiements : Ansible est largement utilisĂ© pour automatiser les dĂ©ploiements d’applications et de services. Il permet aux Ă©quipes de rĂ©duire les erreurs humaines et d’accĂ©lĂ©rer les processus de dĂ©ploiement, grĂące Ă  une automatisation cohĂ©rente et fiable.
  2. Gestion de Configuration : La gestion de configuration avec Ansible assure une cohĂ©rence et une rĂ©pĂ©tabilitĂ© des configurations des serveurs et des applications Ă  travers diffĂ©rents environnements. Cette approche unifiĂ©e aide Ă  maintenir l’intĂ©gritĂ© et la stabilitĂ© des systĂšmes informatiques.
  3. Orchestration : L’orchestration de tĂąches IT complexes est facilitĂ©e par Ansible. Il permet de dĂ©finir avec prĂ©cision l’ordre et la maniĂšre d’exĂ©cution des tĂąches, optimisant ainsi la gestion de workflows complexes dans les environnements IT.
  4. Gestion des ÉvĂ©nements : Un aspect innovant de l’utilisation d’Ansible est sa capacitĂ© Ă  gĂ©rer les Ă©vĂ©nements de maniĂšre “event-driven”. Cette approche permet Ă  Ansible de rĂ©agir automatiquement Ă  des Ă©vĂ©nements spĂ©cifiques dans l’environnement IT. Par exemple, Ansible peut ĂȘtre configurĂ© pour rĂ©pondre Ă  des changements de configuration, Ă  des alertes de sĂ©curitĂ©, ou Ă  d’autres dĂ©clencheurs dans le systĂšme. Cette rĂ©activitĂ© rend les systĂšmes gĂ©rĂ©s par Ansible non seulement plus efficaces, mais aussi plus adaptatifs aux conditions changeantes, un atout clĂ© dans les environnements IT dynamiques d’aujourd’hui.

Comment fonctionne Ansible ?

Contrairement aux idĂ©es reçues pour apprendre Ă  dĂ©velopper du code Ansible, il n’y a pas besoin de dĂ©ployer un serveur Ansible !

La grande force d’Ansible est qu’il est facile Ă  mettre en Ɠuvre, car il est agent-less et ne nĂ©cessite qu’une connexion SSH et la prĂ©sence d’une installation minimale de python pour exĂ©cuter les tĂąches dĂ©crites.

Lorsqu’il y a plusieurs machines Ă  gĂ©rer, Ansible exĂ©cute les opĂ©rations en parallĂšle. Cela permet de gagner un temps considĂ©rable. Cependant, les tĂąches sont effectuĂ©es dans un ordre dĂ©fini par l’utilisateur lors du choix de la stratĂ©gie : Par dĂ©faut Ansible attendra d’avoir fini une tĂąche (sur tous les hĂŽtes) pour passer Ă  la suivante.

Ansible et plus particuliĂšrement ses modules sont idempotents. Cela signifie qu’une opĂ©ration donnera le mĂȘme rĂ©sultat qu’on l’exĂ©cute une ou plusieurs fois. Par exemple, on va vĂ©rifier si un utilisateur existe, si c’est le cas, on ne fera rien, mais si l’utilisateur n’existe pas alors, on viendra le crĂ©er.

Ansible

Composants clés

  • Node Manager : ou control node, est le poste depuis lequel tout est exĂ©cutĂ© via des connexions, essentiellement en SSH, aux nƓuds cibles.
  • Playbook : Un playbook Ansible dĂ©crit une suite de tĂąches ou de rĂŽles Ă©crits dans un fichier ou format YAML.
  • RĂŽle : Afin d’éviter d’écrire encore et encore le mĂȘme code dans les playbooks, Ansible permet d’utiliser des librairies regroupant des fonctionnalitĂ©s spĂ©cifiques. Ces librairies sont appelĂ©es des rĂŽles qui peuvent donc ĂȘtre utilisĂ©s dans les playbooks.
  • Inventaire : La description des systĂšmes cibles gĂ©rĂ©s par Ansible est appelĂ© un inventaire. À chaque node de l’inventaire, on peut attribuer des variables. On distingue deux types d’inventaire :
    • l’inventaire statique constituĂ© de fichier(s) plats.
    • l’inventaire dynamique fourni par un systĂšme centralisĂ©. Exemple L’inventaire AWS EC2.
  • Module : Les tĂąches et les rĂŽles font appel Ă  des modules installĂ©s avec Ansible. Je vous invite Ă  consulter cette liste.
  • Template : Comme son nom l’indique, un template est un modĂšle permettant de gĂ©nĂ©rer un fichier cible. Ansible utilise jinja, un gestionnaire de modĂšles Ă©crit pour Python. Les « Templates » jinja permettent de gĂ©rer des boucles, des tests logiques, des listes ou des variables.
  • Notifier : indique que si une tĂąche change d’état (et uniquement si la tĂąche a engendrĂ© un changement), notify fait appel au handler associĂ© pour exĂ©cuter une autre tĂąche.
  • Handler : TĂąche qui n’est appelĂ©e que dans l’éventualitĂ© oĂč un notifier est invoquĂ©
  • Tag : Nom dĂ©fini sur une ou plusieurs tĂąches qui peuvent ĂȘtre utilisĂ© plus tard pour exĂ©cuter exclusivement cette ou ces tĂąches Ansible.

Comment Installer Ansible ?

Ansible ne peut ĂȘtre installĂ©, en thĂ©orie, que sur des ordinateurs fonctionnant sur les systĂšmes d’exploitation Linux et MacOS. La maniĂšre la plus propre pour installer Ansible se fait avec pipx. pipx est un gestionnaire de paquets Python qui permet d’installer des applications Python dans des environnements isolĂ©s, ce qui est particuliĂšrement utile pour Ă©viter les conflits de dĂ©pendances entre diffĂ©rentes applications Python.

Installation de pipx

Pour installer pipx, vous devez d’abord installer pip si ce n’est pas dĂ©jĂ  fait. pip est le gestionnaire de paquets Python standard. Vous pouvez installer pip en utilisant le gestionnaire de paquets de votre systĂšme d’exploitation.

  • Sur MacOS :
Terminal window
brew install pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
  • Sur Debian/Ubuntu :
Terminal window
sudo apt update
sudo apt install pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
  • Sur Fedora :
Terminal window
sudo dnf install pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
  • Sur Arch Linux :
Terminal window
sudo pacman -S python-pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument

Installation d’ Ansible avec pipx

Maintenant que pipx est installé, vous pouvez installer Ansible en utilisant la commande suivante :

Terminal window
pipx install --include-deps ansible

Installation de l’autocompletion Bash

Depuis la version 2.9 d’Ansible, il est possible d’avoir de l’autocomplĂ©tion bash des commandes ansible. Pour cela, il suffit d’installer le package python argcomplete :

Terminal window
sudo pip3 install argcomplete
sudo activate-global-python-argcomplete

Test aprùs installation d’Ansible

Comment exécuter Ansible ? Il suffit de taper la commande suivante qui va simplement lancer en local (-c local) un shell qui exécutera la commande echo 'salut B0B':

Terminal window
ansible all -i "localhost," -c local -m shell -a 'echo Salut B0B'
localhost | success | rc=0 >>
salut B0B

Dans le vocabulaire Ansible, le fait d’utiliser le binaire ansible pour exĂ©cuter une simple tĂąche est une commande ‘ad hoc’. En effet, nous utiliserons plus souvent la commande ansible-playbook qui permet elle d’orchestrer un ensemble de taches. Un exemple de commande ad hoc : rebooter un ensemble de machines.

Comment apprendre Ansible ?

Écrire du code Ansible consiste d’abord Ă  comprendre son approche dĂ©clarative et ses concepts de base. Contrairement Ă  un langage de programmation traditionnel, oĂč l’on dĂ©crit Ă©tape par Ă©tape ce que le programme doit faire, Ansible permet de dĂ©clarer un Ă©tat final pour une infrastructure ou une application. Le rĂŽle d’Ansible est ensuite de s’assurer que cet Ă©tat est atteint.

Pour vous aider Ă  progresser dans votre apprentissage d’Ansible, j’ai elaborĂ© un parcours de formation structurĂ©. Ce parcours est conçu pour vous guider Ă  travers les diffĂ©rentes Ă©tapes de l’apprentissage d’Ansible, en commençant par les bases et en avançant vers des concepts plus avancĂ©s. Chaque Ă©tape contient des ressources et des exercices pratiques pour vous permettre de maĂźtriser Ansible de maniĂšre progressive et efficace.

Voici les étapes de ce parcours :

  1. Configuration d’Ansible
  2. Les Inventaires Statiques
  3. Ecriture de Playbooks
  4. Les Handlers
  5. Les Templates
  6. Les Inventaires Dynamiques
  7. Les Conditions
  8. Le Développement de RÎles
  9. Les Blocks
  10. La Gestion des Secrets
  11. Les Boucles
  12. Les Customs Facts
  13. Les Lookups
  14. Les TĂąches Asynchrones
  15. Déléguer des tùches

Mise en pratique

Car comme rien ne vaut la pratique, je vous propose de mettre en pratique vos connaissances avec des exercices pratiques. Ces exercices sont conçus pour vous aider Ă  maĂźtriser les concepts clĂ©s d’Ansible, notamment les boucles, les conditions et les templates. Vous apprendrez Ă  Ă©crire des playbooks efficaces, Ă  gĂ©rer des inventaires dynamiques et Ă  utiliser des modules Ansible pour automatiser des tĂąches courantes.

👉 Ansible Training ↗

Clonez ce dépÎt et suivez les consignes directement dans les fichiers.

ContrĂŽle de connaissances

Une fois que vous aurez acquis les compĂ©tences nĂ©cessaires, il est important de les valider. Pour cela, je vous propose un examen pratique qui vous permettra de tester vos connaissances et de vous assurer que vous ĂȘtes prĂȘt Ă  utiliser Ansible dans un environnement professionnel. Cet examen contient l’ensemble des questions que vous rencontrez dans l’ensemble des chapitres de la formation.

Pourquoi ce contrĂŽle ?

Cet contrÎle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomĂštre commence dĂšs que vous cliquez sur DĂ©marrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour rĂ©ussir, vous devez obtenir au moins 80% de bonnes rĂ©ponses.

💡 Je ne fournis pas directement les rĂ©ponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront ĂȘtre proposĂ©es dans le guide ou aprĂšs l’examen.

Bonne chance ! 🚀

Plus d’info

FAQ : Questions Fréquentes

Qu'est-ce qu'Ansible ?
Ansible est un outil d'automatisation open-source qui permet de gérer la configuration et le déploiement des serveurs de maniÚre déclarative.
Comment fonctionne Ansible ?
Ansible utilise SSH pour exécuter des tùches sur des hÎtes distants. Il fonctionne sans agent et utilise des fichiers YAML appelés playbooks pour définir les actions à exécuter.
Quels sont les principaux composants d'Ansible ?
Les composants principaux d'Ansible sont les modules (actions exécutées sur les hÎtes), les playbooks (scénarios d'automatisation), l'inventaire (liste des hÎtes gérés) et les rÎles (structures réutilisables).
Qu'est-ce qu'un playbook Ansible ?
Un playbook est un fichier YAML contenant une série de tùches qu'Ansible exécute sur des hÎtes définis dans l'inventaire. Il permet d'automatiser des configurations complexes.
Comment installer Ansible ?
Ansible peut ĂȘtre installĂ© avec la commande `pip install ansible` sur la plupart des distributions Linux et macOS, ou via les gestionnaires de paquets comme `apt` (Debian/Ubuntu) et `dnf` (Fedora).
Qu'est-ce qu'un module Ansible ?
Un module Ansible est un composant qui exécute une action spécifique sur un hÎte cible. Par exemple, le module `apt` installe des paquets sur Debian/Ubuntu, et le module `service` gÚre les services systÚme.
Qu'est-ce qu'un rĂŽle Ansible ?
Un rÎle est une structure organisée contenant des tùches, des fichiers et des variables permettant de réutiliser du code et de structurer les playbooks efficacement.
Ansible nécessite-t-il un agent sur les machines cibles ?
Non, Ansible est agentless. Il utilise uniquement SSH (ou WinRM pour Windows) pour se connecter aux machines et exécuter les commandes.
Peut-on utiliser Ansible avec Windows ?
Oui, Ansible peut gĂ©rer des machines Windows en utilisant WinRM, mais il doit ĂȘtre installĂ© sur une machine Linux/macOS.
Comment tester un playbook Ansible ?
On peut utiliser la commande `ansible-playbook --check` pour faire un dry-run sans appliquer les changements, ou utiliser Molecule pour tester les rĂŽles.