Ansible : Automatisation, Orchestration et Déploiement
Origine, Définition et Prérequis
Origine et définition
Ansible est un outil incontournable et très populaire dans le milieu DevOps.
À ce jour, il a déjà eu trois propriétaires depuis sa création .
- En 2012 Ansible est crée par Michael DeHaan .
- Puis en octobre 2015, cette plateforme a été rachetée par RedHat pour un montant estimé à plus de 100 millions de dollars .
- En 2018, RedHat a également été racheté par IBM à auteur de 34 milliards de dollars .
Donc depuis 2018, on peut dire que Ansible appartient à IBM, même si Michael DeHaan en est le véritable créateur .
Cette plateforme est très célèbre aujourd’hui car elle offre une rapidité exponentielle et une énorme flexibilité dans le déploiement des applications .
Ansible a été écrit en trois langages à savoir : Python, PowerShell et Ruby .
Les systèmes d’exploitations qui peuvent gérer cet outil sont : Tous les systèmes GNU/LINUX, MAC OS, BSD et Microsoft Windows ( uniquement pour les nœuds contrôlés ) .
En guise de définition, nous pouvons dire que Ansible est un outil de gestion de configuration qui permet d’orchestrer des tâches avec des scripts d’automatisation. Cette automatisation se fait sans l’utilisation d’un agent quelconque.
Prérequis
Pour suivre ce tutoriel, vous devez être familier avec les systèmes Linux, notamment l’utilisation d’un terminal en ligne de commande et la gestion des droits d’accès .
Pour que l’outil Ansible soit mis en place, il faut la présence de deux éléments obligatoires :
- Le nœud de contrôle (ou node manager en anglais ) : C’est simplement un ordinateur qui fera office de serveur (desktop ou portable), sur lequel l’outil Ansible est installé et qui permettra de gérer les machines et autres périphériques à distance (par défaut, via le protocole SSH). De façon simplifiée, le nœud de contrôle est la machine qui exécute Ansible .
- Les nœuds gérés (Managed node en anglais) : Ce sont les ordinateurs hôtes ou clients, qui seront contrôlés par le node manager .
Ansible peut gérer un parc entier de machines distantes à partir de ce seul nœud de contrôle.
Avant l’installation de Ansible, il faut vérifier la configuration requise pour un nœud de contrôle et pour un nœud contrôlé car ces deux éléments ont des exigences minimales différentes.
Prérequis pour le nœud de contrôle ( la machine serveur )
Pour le node manager, vous pouvez utiliser n’importe quelle machine ayant un noyau UNIX, avec Python 2 (version 2.7) ou Python 3 (versions 3.5 et supérieures) installé.
Les versions ansible-core 2.11 et ansible 4.0.0 feront de Python 3.8 une dépendance logicielle pour le nœud de contrôle, mais fonctionnera avec les exigences susmentionnées.
Ansible-core 2.12 et Ansible 5.0.0 exigeront Python 3.8 ou plus récent pour fonctionner sur le nœud de contrôle.
À partir d’ansible-core 2.11, le projet ne sera empaqueté que pour Python 3.8 et plus récent.
Le nœud de contrôle à utiliser pour l’installation de Ansible doit impérativement être un système d’exploitation ayant un noyau UNIX comme par exemple : Red Hat, Debian, Ubuntu, CentOS, Fedora, macOS et n’importe quel BSD.
Les systèmes d’exploitation Microsoft Windows ne sont pas supportés pour le nœud de contrôle . Cela signifie que vous ne pouvez pas installer Ansible directement sur ce type de système . Peut-être que cette contrainte pourrait évoluer dans le futur (car la technologie évolue), mais pour le moment, seuls les systèmes ayant un noyau UNIX peuvent être utilisés comme “node manager” .
Remarque importante : Lors du choix d’un nœud de contrôle, n’oubliez pas que tout système de gestion a intérêt à être exécuté à proximité des machines gérées. De ce fait, si vous utilisez Ansible pour gérer des machines dans un cloud, envisagez d’utiliser une machine à l’intérieur de ce cloud comme nœud de contrôle. Dans la plupart des cas, Ansible fonctionnera mieux à partir d’une machine sur le cloud qu’à partir d’une machine accessible via une connexion internet publique.
Prérequis pour le nœud contrôlé ( la machine cliente )
Bien que vous n’ayez pas besoin d’un démon ou d’une application quelconque sur vos nœuds gérés, vous aurez quand même besoin d’un moyen pour Ansible de communiquer avec eux.
Pour la plupart des nœuds gérés, Ansible établit une connexion via SSH et transfère les modules à l’aide de SFTP.
Si SSH fonctionne mais que SFTP n’est pas disponible sur certains de vos nœuds gérés, vous pouvez passer à l’utilisation de la commande SCP dans le fichier de configuration ansible.cfg.
Pour toute machine ou tout périphérique pouvant exécuter Python, vous avez également besoin de Python 2 (version 2.6 ou ultérieure) ou de Python 3 (version 3.5 ou ultérieure).
Ainsi, La seule condition à remplir pour un nœud contrôlé est d’autoriser une connexion à distance (SSH ou SFTP ) .
Pour le nœud contrôlé, vous pouvez utiliser tout type de systèmes d’exploitations (y compris Windows) .
Remarque : Veuillez noter que certains modules ont des exigences supplémentaires qui doivent être satisfaites sur la machine cible (le nœud géré). Ces exigences seront généralement listées dans la documentation du module. Nous en parlerons plus tard dans la suite de ce cours .
Tous les prérequis étant désormais détaillés, il ne vous reste plus qu’a effectuer le choix d’un node manager et d’une node client . Veuillez choisir des systèmes qui correspondent à vos besoins et à vos architectures .
Nous pouvons à présent passer à l’étape d’installation .