Outils pour utilisateurs

Outils du site


cours:informatique:sysadmin:ansible_pour_automatiser_taches_de_configuration:120_installer_ansible

Installez Ansible dans votre environnement

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.

Découvrez Ansible

Qu’est-ce qu’Ansible ?

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.

Le nom Ansible est tiré d’un roman de science-fiction écrit par Ursula Le Guin, et qui désigne un moyen de communication plus rapide que la lumière.

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.

Complétez votre architecture technique pour Ansible

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 :

  • deux serveurs (Apache et MySQL) ; dans le jargon Ansible, ces serveurs sont appelés des nodes ;
  • un serveur de contrôle, appelé node manager. C’est le serveur sur lequel seront installés les outils Ansible et depuis lequel, les opérations de configuration seront lancées à distance sur les nodes :

Architecture de production complète avec le node manager Ansible

Icône d'un Node

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.

Icône d'un node manager

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.

Ansible est un outil agentless, c’est-à-dire qu’il n’installe pas d’agent sur les nodes. Il travaille donc en mode push : il pousse les installations sur les nodes. Pour cela, il n’utilise que les outils déjà présents sur la plupart des systèmes Linux : SSH et Python.

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.

Dans le cadre de ce cours, vous utiliserez votre ordinateur comme Node Manager. Mais en pratique, il est conseillé d’avoir un serveur de référence sur lequel vous configurez un environnement d'automatisation toujours opérationnel et sécurisé, capable de se connecter aux nodes de votre infrastructure. De plus, si vous travaillez à plusieurs sur l’infrastructure de l’entreprise avec Ansible, c’est beaucoup plus simple de contrôler les accès et les scripts depuis un point unique.

Gérez vos configurations avec le Node Manager

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 :

  • node manager : 192.168.122.10 (Debian 11) ;
  • serveur 1 : 192.168.122.11 (Debian 11) ;
  • serveur 2 : 192.168.122.12 (Debian 11).

À 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.

Le node manager et les nodes peuvent avoir des systèmes d’exploitation différents. Le node manager peut être un système Debian, et les nodes peuvent être des systèmes Centos, Windows, Ubuntu ou autre. Il n’y a pas de corrélation entre le système du node manager et le système des 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.

Installez Ansible

Installez Ansible sur le node manager

Vous allez installer Ansible sur votre node manager. Il y a plusieurs façons d’installer Ansible :

  • via les packages logiciels sur un système Linux ;
  • via pip de Python dans un virtualenv ou pas ;
  • via les sources officielles (Archives ou Git) maintenues par Red Hat.

Ansible peut être installé avec ces trois méthodes nativement sur des systèmes de type UNIX (Linux ou macOS).

A VALIDER : Pour Windows, il faudra passer par un émulateur Unix de type Cygwin pour installer Ansible.

Installez les prérequis

L’installation de Ansible sur le node manager (un serveur Debian) se fera avec la méthode pip de Python dans un virtualenv.

Un virtualenv est un outil Python qui permet de créer des environnements de travail virtuels isolés. Virtualenv crée un dossier qui contient les fichiers exécutables Python, et une copie de la bibliothèque pip.

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.

Créez un simple utilisateur

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.

La ligne de commande commence par un “#” quand vous êtes en root, et par un “$” quand vous êtes en simple utilisateur.

Créez votre environnement de travail virtuel

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 Ansible dans votre environnement virtuel

Installez maintenant Ansible avec pip avec la commande suivante :

pip install ansible
Attention de bien vérifier que le prompt avant de lancer les commandes : l'environnement virtuel doit être actif.

Vérifiez la version de Ansible avec la commande suivante :

ansible --version

Tout est OK, Ansible est installé !

Vérifiez votre installation

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 : cette commande permet de lancer des actions Ansible en mode ad-hoc (en ligne de commande) ;
  • ansible-config : cette commande permet de manager la configuration de Ansible :
    • si vous lancez la commande ansible-config list, vous allez lister la configuration de Ansible. Toutes ces variables sont contenues dans ./lib/pythonX.Y/site-packages/ansible/constants.py ;
    • ansible-doc : cette commande permet d’obtenir de l’aide pour utiliser Ansible ; la documentation est très bien faite, c’est plutôt pratique pour se guider quand on commence, surtout que vous pouvez y trouver des exemples concrets.

Résumé

Dans ce chapitre, vous avez découvert l’automatisation avec Ansible, et plus particulièrement :

  • la genèse de Ansible ;
  • l’architecture Ansible avec le node manager et les nodes ;
  • comment installer Ansible dans un environnement de travail virtuel ;
  • trois outils fondamentaux qui composent une partie des outils Ansible.

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.

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/sysadmin/ansible_pour_automatiser_taches_de_configuration/120_installer_ansible.txt · Dernière modification : 2025/02/17 18:42 de yoann