Apprendre Ansible đ | Automatiser ses serveurs Linux
Mise Ă jour :
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.
- 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.
- 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.
- 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.
- 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.
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 :
brew install pipxpipx ensurepathsudo pipx ensurepath --global # optional to allow pipx actions with --global argument
- Sur Debian/Ubuntu :
sudo apt updatesudo apt install pipxpipx ensurepathsudo pipx ensurepath --global # optional to allow pipx actions with --global argument
- Sur Fedora :
sudo dnf install pipxpipx ensurepathsudo pipx ensurepath --global # optional to allow pipx actions with --global argument
- Sur Arch Linux :
sudo pacman -S python-pipxpipx ensurepathsudo 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 :
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
:
sudo pip3 install argcompletesudo 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'
:
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 :
- Configuration dâAnsible
- Les Inventaires Statiques
- Ecriture de Playbooks
- Les Handlers
- Les Templates
- Les Inventaires Dynamiques
- Les Conditions
- Le Développement de RÎles
- Les Blocks
- La Gestion des Secrets
- Les Boucles
- Les Customs Facts
- Les Lookups
- Les TĂąches Asynchrones
- 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
- Site officiel : Ansible.com â
- Documentation : Documentation â