Comprendre comment Ansible se connecte aux machines distantes peut sembler complexe.
Une mauvaise configuration des connexions peut entraîner des échecs dans la gestion des machines, compromettant la sécurité et l’efficacité.
Cet article vous guide à travers les méthodes de connexion Ansible, y compris l’utilisation de SSH, pour assurer une configuration correcte et sécurisée.
Devenez un expert d'Ansible et simplifiez vos tâches d'administration.
Vous voulez toujours maîtriser Ansible ? Vous êtes toujours sur la bonne voie. Dans cette partie, nous allons comprendre la connexion entre les nœuds. Pour qu’Ansible puisse gérer et configurer nos machines, il est essentiel de comprendre comment ces machines communiquent entre elles. Cette section explorera les bases de la connexion entre deux machines, en mettant l’accent sur les methodes de connexion, l’utilisateur distant et les outils et les configurations nécessaires pour établir une communication fiable et sécurisée.
Méthodes de connexion Ansible
Ansible offre plusieurs méthodes de connexion pour gérer et configurer les machines distantes. Voici un aperçu des principales méthodes utilisées :
- OpenSSH natif :OpenSSH est la méthode de connexion par défaut d’Ansible. Elle utilise le client SSH natif installé sur notre système pour se connecter aux machines cibles. OpenSSH offre des avantages tels que la compatibilité avec de nombreux systèmes d’exploitation.
- ~/.ssh/config.
- ControlPersist :ControlPersist est une fonctionnalité d’OpenSSH qui permet de garder une connexion SSH ouverte pendant une période définie, réduisant ainsi le temps de connexion pour les tâches successives.
- Paramiko :Paramiko est une bibliothèque Python qui permet d’établir des connexions SSH. Bien qu’il soit moins utilisé qu’OpenSSH natif, Paramiko peut être une alternative utile dans des environnements où le client OpenSSH n’est pas disponible.
En plus d’OpenSSH et de Paramiko, Ansible prend en charge d’autres méthodes de connexion via des plugins spécifiques. Ces plugins peuvent être configurés pour gérer des connexions vers des dispositifs réseau, des API HTTP et divers autres types de services. Par ailleurs, Ansible propose une méthode de déploiement appelée Ansible-pull, où les machines cibles récupèrent leur configuration depuis un dépôt central, généralement un dépôt Git.
Utilisateur distant dans Ansible
Nous avons découvert les méthodes de connexion avec Ansible, mais vous vous demandez peut-être quel compte utiliser pour se connecter aux machines distantes.
Il est possible de définir un utilisateur différent de celui utilisé sur le nœud de contrôle pour exécuter des tâches sur les machines cibles. Cela permet d’effectuer des tâches avec certains privilèges spécifiques en utilisant le mot-clé become . Pour définir l’utilisateur distant, il existe deux possibilités :
- Compte root avec identification par clé :Utiliser une cléSSHpour se connecter directement en tant queroot.
- Compte non privilégié avec le mot-clé sudo :Utiliser un compte utilisateur standard et élever ses privilèges avecsudoen utilisant le mot-clébecome.
Escalade des privilèges avec Become
Le mot-clé become est utilisé pour activer l’escalade des privilèges dans Ansible, permettant ainsi d’exécuter des tâches avec des droits élevés.
become : Défini sur yes pour activer l’escalade des privilèges.
become_user : Défini sur l’utilisateur avec les privilèges souhaités. Par exemple, become _ user : root pour exécuter des tâches en tant que root .
become_method : Défini la méthode d’escalade des privilèges. Par défaut, Ansible utilise sudo , mais nous pouvons remplacer cette méthode par une autre, comme su ou pbrun .
Ces paramètres permettent de contrôler comment et avec quel utilisateur les privilèges sont élevés, offrant une flexibilité pour s’adapter à divers environnements et exigences de sécurité.
Maintenant, nous allons expliquer comment définir l’utilisateur de connexion Ansible dans un playbook. Pour ce faire, créons un fichier play.yml par exemple, que nous placerons dans un répertoire de notre choix, par exemple Playbook/play.yml.
---
- name : update webservers
hosts: webservers
remote_user : admin
tasks:
- name : first task ...
name : Ce champ permet de nommer la tâche ou le bloc d’instructions .
hosts : Spécifie les groupes d’hôtes ou les hôtes individuels sur lesquels le playbook va être exécuté. Dans cet exemple, le playbook est destiné aux hôtes du groupe « webservers ».
remote_user : admin : Indique l’utilisateur à utiliser pour se connecter aux hôtes distants. Dans ce cas, Ansible utilisera l’utilisateur admin pour exécuter les commandes sur les serveurs web spécifiés dans hosts.
tasks : C’est la liste des tâches spécifiques à exécuter sur les hôtes définis.
Voilà, nous avons spécifier un utilisateur dans le playbook. Par la suite, il faut spécifier le nom d’utilisateur dans l’inventaire. Pour le faire, creons un fichier inventaire.ini avec un contenu comme ceci par exemple.
formation1.ansible.com ansible_connection = ssh ansible_user = Elon
formation2.ansible.com ansible_connection = ssh ansible_user = Musk
formation1.ansible.com et formation2.ansible.com : Ce sont les noms des hôtes dans notre infrastructure.
ansible_connection=ssh : Spécifie que la connexion aux hôtes se fera via SSH, ce qui est la méthode typique pour la gestion à distance avec Ansible.
ansible_user=Elon et ansible_user=Musk : Indique les utilisateurs à utiliser lors de la connexion SSH à chaque hôte respectif. Dans notre exemple, Elon est l’utilisateur pour formation1.ansible.com et Musk pour formation2.ansible.com.
Protocole SSH pour Ansible
SSH (Secure Shell) est un protocole réseau cryptographique utilisé pour se connecter de manière sécurisée à des systèmes distants via le port 22. Les principales fonctionnalités sont :
- Sécurité :SSH chiffre les communications, protégeant ainsi les données échangées.
- Authentification :Les utilisateurs peuvent s’authentifier via des mots de passe ou des clés SSH, ces dernières offrant une sécurité accrue.
- Administration à distance :SSH permet de gérer des serveurs distants, de déployer des applications et d’effectuer des tâches de maintenance.
- Transfert de fichiers :Utilisation de scp et sftp pour des transferts de fichiers sécurisés.
- Tunnels sécurisés :SSH peut créer des tunnels sécurisés pour rediriger le trafic réseau.
Comme précisé sur le visuel ci-dessus, SSH est compatible avec macOS et Linux, ainsi qu’avec les versions 10 et supérieures de Windows. Pour les versions antérieures à Windows 10, un logiciel nommé PuTTY est nécessaire pour établir des connexions sécurisées via SSH.
Pour comprendre comment fonctionne la connexion SSH : La connexion repose sur trois composants principaux : le client SSH, le port 22 et le serveur SSH.
Client SSH : Le client SSH est l’application que l’utilisateur utilise pour se connecter à un serveur distant. L’utilisateur lance le client SSH et spécifie l’adresse IP ou le nom de domaine du serveur auquel il souhaite se connecter.
Port 22 : SSH utilise par défaut le port 22 pour la communication entre le client et le serveur. Ce port est standard pour les connexions SSH, bien que ce paramètre puisse être configuré pour utiliser d’autres ports si nécessaire. Le port 22 doit être ouvert et accessible sur le serveur pour que les connexions SSH puissent être établies avec succès.
Établissement de la connexion : Lorsqu’un utilisateur initie une connexion SSH depuis le client vers un serveur distant, le client envoie une demande de connexion au serveur SSH sur le port 22. Cette demande contient des informations telles que l’identifiant de l’utilisateur et les méthodes d’authentification supportées.
Authentification : Une fois que le serveur SSH reçoit la demande de connexion, il répond en demandant une méthode d’authentification. Cette phase d’authentification peut inclure l’utilisation de mots de passe, de clés publiques/privées ou d’autres méthodes configurées sur le serveur SSH.
Voici un visuel récapitulatif du fonctionnement de la connexion SSH client vers le SSH serveur :
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment Ansible connecte-t-il les machines distantes?
Quelles sont les méthodes de connexion disponibles dans Ansible?
Comment définir l'utilisateur distant dans Ansible?
Comment fonctionne le protocole SSH?
Pourquoi utiliser le mot-clé 'become' dans Ansible?
Conclusion
En maîtrisant les méthodes de connexion et l’utilisation de SSH dans Ansible, vous pouvez améliorer considérablement la gestion de vos infrastructures. Quelle autre fonctionnalité Ansible pensez-vous explorer pour optimiser vos opérations?