Introduction
Dans ce laboratoire, vous allez faire vos premiers pas avec Ansible, un puissant outil d’automatisation open source.
Imaginez que vous deviez gérer 100 serveurs. Vous connecter à chacun d’eux pour installer des logiciels ou modifier des paramètres serait fastidieux et source d’erreurs. Ansible vous permet de gérer ces serveurs, appelés nœuds gérés, depuis un seul nœud de contrôle, sans installer d’agents sur les cibles.
Cette conception sans agent est l’une des principales raisons du succès d’Ansible auprès des équipes d’exploitation. Elle réduit la quantité de logiciels supplémentaires à maintenir sur chaque hôte et s’appuie sur des outils auxquels les administrateurs font déjà confiance, en particulier SSH.
Ansible fonctionne de la manière suivante :
- Connexion aux serveurs à l’aide de SSH, le même outil que celui utilisé pour vous connecter à distance.
- Lecture des instructions dans de simples fichiers texte écrits en YAML.
- Envoi de petits programmes, appelés modules, vers les serveurs pour effectuer les opérations.
Ce modèle sans agent explique en partie la popularité d’Ansible. Il s’appuie sur des outils que les administrateurs Linux connaissent déjà, notamment SSH et les fichiers de configuration textuels.
Dans ce laboratoire, vous jouerez à la fois le rôle du gestionnaire et celui de la machine gérée. Vous installerez Ansible dans votre environnement, puis le configurerez pour qu’il se gère lui-même (localhost). C’est une excellente manière d’apprendre les bases en toute sécurité.
Vous apprendrez à :
- Installer Ansible à l’aide du gestionnaire de paquets.
- Configurer des clés SSH afin qu’Ansible puisse se connecter sans mot de passe.
- Créer un fichier d’inventaire pour répertorier les ordinateurs que vous souhaitez gérer.
- Tester la connexion à l’aide du module
ping.
Installer Ansible
La première étape consiste à installer le logiciel Ansible sur votre machine. Comme nous utilisons Ubuntu, nous pouvons utiliser le gestionnaire de paquets apt, qui fonctionne comme une « boutique d’applications » pour les outils en ligne de commande Linux.
Même si le script de configuration a déjà effectué une mise à jour, il est recommandé de vérifier que la liste des paquets est à jour :
sudo apt update
Installez ensuite Ansible avec la commande suivante :
sudo apt install ansible -y
Comprendre la commande :
sudo: exécute la commande avec les privilèges de l’administrateur (root).apt install: demande au gestionnaire de paquets d’installer un programme.ansible: nom du paquet à installer.-y: répond automatiquement « oui » aux demandes de confirmation, par exemple « Voulez-vous continuer ? ».
Une fois l’installation terminée, vérifiez-la en affichant la version installée :
ansible --version
La sortie doit commencer par ansible [core 2.x.x]. Cela confirme qu’Ansible est installé et prêt à être utilisé.
Générer des clés SSH
Ansible utilise SSH (Secure Shell) pour communiquer avec les serveurs. Il s’agit de la méthode standard pour accéder à distance aux serveurs Linux.
C’est également pourquoi l’inventaire est si important. Ansible a besoin d’une liste claire des machines existantes, de leur organisation en groupes et de la manière de les joindre. L’inventaire constitue en pratique le carnet d’adresses de votre système d’automatisation.
Par défaut, SSH demande un mot de passe. Pour les outils d’automatisation comme Ansible, saisir un mot de passe à chaque connexion à un serveur est impossible. Nous utilisons donc des clés SSH.
Considérez les clés SSH comme une serrure et une clé :
- Clé publique (la serrure) : vous la placez sur chaque serveur auquel vous souhaitez accéder.
- Clé privée (la clé) : vous la conservez en lieu sûr sur votre ordinateur de contrôle.
Lorsqu’Ansible se connecte, le serveur vérifie que votre « clé » correspond à sa « serrure ». Si c’est le cas, la connexion est autorisée sans mot de passe.
Générez une paire de clés avec la commande suivante :
ssh-keygen -t rsa -b 2048 -N "" -f ~/.ssh/id_rsa
Comprendre la commande :
ssh-keygen: outil de génération de clés.-t rsa: crée une clé de type RSA, un format standard.-b 2048: définit une longueur de clé de 2048 bits, suffisamment sûre.-N "": définit une phrase secrète vide. C’est essentiel : cela signifie qu’aucun mot de passe ne sera demandé pour utiliser cette clé, ce qui permet à Ansible de fonctionner entièrement automatiquement.-f ~/.ssh/id_rsa: enregistre la clé à l’emplacement standard.
Vérifiez que les fichiers ont bien été créés :
ls -l ~/.ssh/
Vous devez voir id_rsa, votre clé privée secrète, et id_rsa.pub, votre clé publique.
Autoriser votre clé
Maintenant que vous disposez d’une clé, vous devez placer la clé publique sur le serveur que vous souhaitez gérer. Dans ce laboratoire, nous gérons localhost, c’est-à-dire la machine que vous utilisez actuellement.
Cette étape illustre la séparation entre l’authentification et la logique d’automatisation. Avant de pouvoir automatiser une opération, Ansible doit d’abord disposer d’un moyen fiable de s’authentifier auprès de la cible sans intervention.
Ajoutez le contenu de votre fichier id_rsa.pub dans un fichier nommé authorized_keys, situé dans le dossier .ssh.
Normalement, vous utiliseriez une commande comme ssh-copy-id. Toutefois, cette commande demande généralement un mot de passe au préalable afin de vérifier votre identité. Comme cet environnement de laboratoire n’utilise pas de mot de passe, nous allons copier la clé manuellement.
Exécutez la commande suivante pour ajouter votre clé publique à la liste des clés autorisées :
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Comprendre la commande :
cat ...: lit votre clé publique.>>: ajoute la sortie à la fin du fichier cible au lieu de l’écraser..../authorized_keys: fichier consulté par SSH pour déterminer qui est autorisé à se connecter.
Définissez ensuite les permissions appropriées afin que SSH fasse confiance à ce fichier :
chmod 600 ~/.ssh/authorized_keys
Testons maintenant la connexion. Essayez de vous connecter en SSH à votre propre machine :
ssh localhost "echo Hello from SSH"
Si le message « Are you sure you want to continue connecting? » s’affiche, saisissez yes, puis appuyez sur Entrée.
Vous devez voir immédiatement le message « Hello from SSH », sans qu’un mot de passe vous soit demandé. Cela signifie qu’Ansible pourra lui aussi se connecter sans mot de passe.
Créer un fichier d’inventaire
Ansible a besoin d’une liste des serveurs à gérer. Cette liste s’appelle un inventaire.
L’inventaire peut être un simple fichier texte. Nous allons créer un répertoire de projet ainsi qu’un fichier d’inventaire nommé hosts.ini.
Créez un fichier vide nommé hosts.ini :
touch hosts.ini
Pour le moment, Ansible ne connaît aucun serveur. Nous les ajouterons à l’étape suivante.
Ajouter un hôte à l’inventaire
Nous allons maintenant modifier le fichier hosts.ini pour y ajouter notre serveur. Les inventaires Ansible utilisent souvent le format INI, qui se présente ainsi :
[group_name]
server_address
Le regroupement des serveurs, par exemple [webservers] ou [databases], permet d’exécuter simultanément des commandes sur tous les serveurs d’un même type.
Ajoutons localhost à un groupe nommé [webservers]. Exécutez la commande suivante pour écrire dans le fichier :
echo -e "[webservers]\nlocalhost" > hosts.ini
Comprendre la commande :
echo -e: affiche du texte et interprète les caractères spéciaux comme\n, qui représente un retour à la ligne."[webservers]\nlocalhost": texte à écrire.[webservers]est placé sur la première ligne etlocalhostsur la deuxième.> hosts.ini: écrase le fichier et le remplace par ce contenu.
Vous pouvez vérifier le contenu du fichier :
cat hosts.ini
Il doit être exactement comme ceci :
[webservers]
localhost
Tester la connectivité
Passons au test décisif. Nous allons demander à Ansible de se connecter à tous les serveurs de notre inventaire et de vérifier qu’ils sont accessibles.
Nous utilisons la commande ansible, qui sert à exécuter des tâches ponctuelles, avec le module ping.
Exécutez la commande suivante :
ansible all -m ping -i hosts.ini
Comprendre la commande :
all: correspond à tous les hôtes de votre inventaire.-m ping: demande à Ansible d’utiliser le module nomméping.- Remarque : ce module est différent de la commande réseau
ping. Le modulepingd’Ansible se connecte réellement au serveur, vérifie que Python est disponible et renvoie « pong ». Il confirme que votre configuration fonctionne.
- Remarque : ce module est différent de la commande réseau
-i hosts.ini: demande à Ansible d’utiliser le fichier d’inventaire que nous venons de créer au lieu de l’inventaire système par défaut.
Vous devez voir un message vert « SUCCESS » :
localhost | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Si vous voyez "ping": "pong", félicitations ! Vous avez correctement configuré Ansible pour gérer votre serveur.
Résumé
Dans ce laboratoire, vous avez posé les bases de l’automatisation avec Ansible. Vous avez appris à :
- Installer Ansible : préparer Ansible sur votre système.
- Configurer des clés SSH : créer des « clés » permettant à Ansible de se connecter de manière sécurisée sans mot de passe.
- Créer un inventaire : établir une liste (
hosts.ini) des serveurs à gérer. - Vérifier la connectivité : utiliser le module
pingpour confirmer que tout fonctionne.
Ces étapes — installation, accès, inventaire et test — sont celles que vous suivrez dans tout projet Ansible, que vous gériez un seul serveur ou mille.


