Notes et transcriptions du cours “Utilisez Ansible pour automatiser vos tâches de configuration” disponible sur la plateforme Openclassrooms.
Dans le premier chapitre, vous avez identifié la façon de s'approprier l’installation d’un wiki et comment aborder l’automatisation de son déploiement : en décomposant les étapes d’architecture, d’installation et de configuration. En finissant par faire le choix d’un outil d’automatisation adapté à vos besoins : Ansible.
Dans ce chapitre, vous allez faire connaissance avec l’outil de gestion Ansible, vous allez comprendre comment déployer automatiquement MediaWiki sur 2 serveurs avec Ansible, et vous allez apprendre à installer Ansible dans un environnement de travail virtuel.
Ansible est un outil d'automatisation informatique écrit en Python. Il peut configurer des systèmes, déployer des logiciels et orchestrer des tâches informatiques avancées, telles que des déploiements continus.
Son créateur s’appelle Michael DeHaan ; la première version de Ansible date de 2012. Depuis, Ansible s'enrichit constamment et une version majeure est proposée approximativement tous les deux mois.
Entretemps, Ansible a été racheté en 2015 par Red Hat ; la communauté compte plus de 3500 contributeurs.
Red Hat a été racheté par IBM en 2018. Donc, Ansible appartient désormais à IBM.
Votre architecture technique est pour le moment constituée de 2 serveurs. Vous allez ajouter un nouveau serveur qui deviendra votre tour de contrôle Ansible.
Votre architecture ressemble donc maintenant au schéma suivant :
Un node (ou managed node, ou host) est un poste connecté au node manager en SSH, et sur lequel Ansible viendra pousser les tâches d’automatisation. Ansible n’est pas installé sur les nodes.
Un node manager, ou control node, est un poste qui contrôle les nodes grâce à sa connexion SSH. Il dispose d'une version Ansible d’installé pour leur pousser les tâches d’automatisation grâce aux commandes ansible
et ansible-playbook
. Ça peut être n’importe quelle machine Linux, mais pas Windows.
L’inverse du mode push est le mode pull. Par exemple, une marketplace d’applications comme le Play Store ou l’AppStore d’Apple sont des systèmes en mode pull : le client (le smartphone) tire les applications ou les mises à jour vers lui.
Vous demandez au sysadmin de vous créer en plus un nouveau serveur Debian 11, qui deviendra le node manager.
Ça tombe bien, car le sysadmin est disponible pour le faire tout de suite et en profite pour vous fournir les adresses IP de tous les serveurs et leurs comptes root ; vous allez pouvoir travailler sur le node manager :
À ce stade, vous devez avoir 3 serveurs disponibles qui communiquent sur le sous-réseau 192.168.122.0/24 et qui sont capables de sortir et de résoudre sur Internet.
Le node manager va donc être votre tour de contrôle. Vous allez y installer Ansible et tous ses outils, pour déployer automatiquement MediaWiki sur les nodes.
Donc sur le node manager, vous trouverez les outils Ansible et les scripts d’automatisation. Tous les scripts seront lancés depuis le node manager. Ce qui aura pour effet d'exécuter des opérations de configuration à distance sur les nodes.
Vous allez installer Ansible sur votre node manager. Il y a plusieurs façons d’installer Ansible :
Ansible peut être installé avec ces trois méthodes nativement sur des systèmes de type UNIX (Linux ou macOS).
L’installation de Ansible sur le node manager (un serveur Debian) se fera avec la méthode pip de Python dans un virtualenv.
pip est un système de gestion de paquets utilisé pour installer et gérer les paquets logiciels écrits en Python.
Avec cette méthode, vous créez un environnement de travail virtuel cloisonné, dans lequel vous pourrez installer la version Ansible de votre choix (basée sur le release repository de Ansible).
À chaque sortie de la dernière version de Ansible, il y a des nouveautés et des dépréciations ; il est donc important de tester la compatibilité de vos scripts avant de mettre à jour les outils Ansible. Avec virtualenv c’est très pratique ! Par exemple, vous pouvez créer un virtualenv par version de Ansible.
Sur Debian par exemple, le paquet disponible pour installer Ansible n’est pas la toute dernière version (Debian privilégie la sécurité et la stabilité plutôt que la nouveauté, c’est un parti pris !). C’est parfois un inconvénient quand on attendait une fonctionnalité tout juste sortie mais non disponible en upgrade sur Debian. La méthode pip permet de s’en affranchir et de disposer de la dernière version de Ansible.
Connectez-vous sur le node manager en root :
ssh user@192.168.122.10 su - root
Installez le paquet python-virtualenv, ce qui permettra de créer des environnement de travail virtuel : virtualenv.
Vous profiterez d’installer le paquet sshpass qui servira ultérieurement pour se connecter en SSH avec Ansible.
apt install python3.11-venv sshpass
À la question “Continuer ?”, répondez Oui
, et l’installation de python-virtualenv et sshpass se lance.
Pour ne pas travailler en root sur le node manager (ce n’est vraiment pas recommandé, le compte root peut tout faire sans aucune limite, une erreur est vite arrivée !), vous allez donc créer un simple utilisateur user-ansible :
adduser user-ansible
Entrez un mot de passe, confirmez-le, complétez les informations demandées, puis validez avec Oui
.
Maintenant que l’utilisateur est créé, vous pouvez l’utiliser avec la commande suivante :
# lance un shell de login en tant que user-ansible su - user-ansible
Vous travaillez maintenant avec l’utilisateur user-ansible sur le node-manager.
Comme indiqué plus haut, vous utiliserez un environnement de travail virtuel pour cloisonner l’installation et l'exécution d'Ansible. Ceci permettra de gérer les dépendances avec la version de Python et d’installer une version particulière de Ansible.
Vous allez installer la dernière version en date de Ansible.
Vous créez alors un environnement de travail virtuel nommé ansible.
Le nom est arbitraire. Vous pouvez mettre ce que vous voulez, mais donner du sens à ce que vous faites, c’est mieux.
Sur le node manager, lancez la commande suivante :
virtualenv ansible
Vous utilisez la commande virtualenv pour créer l'environnement ansible dans lequel les outils, les ressources et le gestionnaire de paquets sont installés.
Pour travailler dans cet environnement virtuel, il faut l' activer :
source ansible/bin/activate
Le prompt a changé au profit de (ansible) user-ansible@node-manager:~$
. Ce qui signifie que vous êtes dans l'environnement de travail virtuel ansible
.
Installez maintenant Ansible avec pip avec la commande suivante :
pip install ansible
Vérifiez la version de Ansible avec la commande suivante :
ansible --version
Tout est OK, Ansible est installé !
Dans le répertoire bin de votre environnement virtuel, vous pouvez constater que 11 outils Ansible sont installés :
ls ansiblebin/ansible* -l ansible ansible-config ansible-connection ansible-console ansible-doc ansible-galaxy ansible-inventory ansible-playbook ansible-pull ansible-test ansible-vault
Regardons de plus près trois d’entre eux :
ansible-config list
, vous allez lister la configuration de Ansible. Toutes ces variables sont contenues dans ./lib/pythonX.Y/site-packages/ansible/constants.py
;Dans ce chapitre, vous avez découvert l’automatisation avec Ansible, et plus particulièrement :
Dans le prochain chapitre, vous allez préparer la communication avec les nodes. Il s’agira de mettre en place les prérequis nécessaires pour établir la communication entre le node manager et les nodes.