Ansible - 3 - 2 Démo ansible inventaire

Pour valider la connectivité entre Ansible et une machine cible, on commence par une connexion SSH manuelle : ssh user@target, acceptation de l'empreinte digitale, saisie du mot de passe, puis on sort. Cette première poignée de main est importante car elle ajoute la clé du serveur dans le fichier known_hosts de la machine de contrôle.

Ensuite on crée un projet, par exemple mkdir ansible-projects, et dans ce dossier un fichier d'inventaire contenant un alias target1 avec son adresse IP via ansible_host et le mot de passe SSH via ansible_ssh_pass. On lance ensuite la commande de test :

ansible target1 -i inventory -m ping

Le module ping effectue un test de bout en bout et s'assure que la connectivité fonctionne. Si tout est en place, Ansible répond SUCCESS et confirme que la communication entre le contrôleur et la cible est établie.

Le piège du known_hosts pour un second serveur

On ajoute ensuite target2 dans l'inventaire en suivant les mêmes étapes, avec son adresse IP et son mot de passe. Le test échoue cette fois-ci. Le message d'erreur évoque le plugin SSH et la clé d'hôte : il manque l'empreinte digitale du second serveur dans le fichier known_hosts de la machine de contrôle, car on n'a pas fait la première connexion SSH manuelle pour cette cible. C'est exactement la raison de l'échec.

Deux options pour résoudre le problème : faire un SSH manuel depuis la machine de contrôle vers la cible et accepter l'empreinte, ou désactiver la vérification de clé d'hôte via le fichier de configuration Ansible. Dans ansible.cfg, on décommente la ligne host_key_checking et on la passe à False. Après sauvegarde, le test ping passe avec succès. Cette seconde méthode n'est cependant pas recommandée en production : il est préférable d'utiliser des clés SSH pour établir la connectivité plutôt que des mots de passe.

En résumé

Cette démonstration pratique montre comment créer et configurer un inventaire Ansible pour établir une connexion réussie entre un contrôleur Ansible et plusieurs serveurs cibles. La vidéo illustre l'utilisation du module ping pour tester la connectivité, l'ajout de serveurs dans l'inventaire avec leurs adresses IP et identifiants, et la résolution des problèmes de vérification de clés SSH. Elle souligne l'importance d'ajouter manuellement les empreintes digitales des serveurs avant d'exécuter les commandes Ansible.

Points clés

  • Créer un fichier d'inventaire Ansible listant les serveurs cibles avec leurs adresses IP, noms d'utilisateur et mots de passe
  • Utiliser le module ping pour vérifier la connectivité entre le contrôleur Ansible et les machines cibles
  • Résoudre les erreurs de clé SSH en effectuant une première connexion SSH manuelle ou en désactivant la vérification d'hôte (non recommandé en production)
  • Accepter les empreintes digitales des serveurs pour les ajouter au fichier known_hosts du contrôleur
  • Utiliser les clés SSH plutôt que les mots de passe pour l'authentification en environnement de production

Questions fréquentes

Pourquoi la commande Ansible échoue-t-elle sur le second serveur?

Le serveur cible 2 n'a pas eu son empreinte digitale SSH acceptée manuellement, donc le contrôleur Ansible ne peut pas établir la connexion. La solution est d'effectuer une connexion SSH manuelle au serveur au préalable et d'accepter la clé en confirmant.

Quelle est la structure d'un fichier d'inventaire Ansible?

Un inventaire Ansible répertorie les serveurs cibles avec des attributs comme ansible_host (adresse IP), ansible_user (nom d'utilisateur) et ansible_password (mot de passe). Chaque serveur peut être défini sur une ligne avec ses paramètres de connexion.

Quel est le meilleur moyen d'authentifier les serveurs Ansible en production?

L'authentification par clés SSH est le moyen recommandé plutôt que d'utiliser des mots de passe, car elle est plus sécurisée et scalable pour gérer de nombreux serveurs en environnement de production.