Ansible est un outil de gestion de configuration largement utilisé, écrit en langage Python, qui aide à configurer une ou plusieurs machines en même temps. Ansible peut être utilisé pour effectuer les tâches suivantes
- Configuration à partir de zéro d’un ou plusieurs nœuds
- Déploiements
- Modifications de configuration
- Patching
- Gestion des services
- et bien d’autres
Ansible est largement utilisé en raison de sa simplicité. Le code Ansible est écrit en langage YAML également, il n’a pas besoin d’un agent à installer sur une machine distante. Ansible utilise le port 22 (SSH) pour se connecter à une machine distante et effectuer les changements nécessaires.
Toute machine, qui peut se connecter à la machine distante sur le port 22 peut devenir un nœud de contrôle. Un nœud de contrôle est l’endroit où vous pouvez installer Ansible et un nœud géré se fait gérer par des nœuds de contrôle.
Regardons l’installation d’Ansible sur le nœud de contrôle.
- Installer Ansible sur CentOS 7 :
- Installer Ansible sur CentOS 8:
- Installer Ansible sur Ubuntu:
- Installer Ansible avec Python PIP sur CentOS, Debian et Ubuntu:
- Configuration des hôtes du contrôleur Ansible:
- Vérifier la connexion du nœud géré :
- host3 | SUCCESS => { « changed » : false, « ping » : « pong »}
- Conclusion :
Installer Ansible sur CentOS 7 :
Comme Python est le seul pré-requis pour installer Ansible, installons Python en exécutant la commande ci-dessous.
$sudo yum install python3 -y
Pour installer Ansible sur CentOS 7, assurez-vous d’abord que le dépôt EPEL de CentOS 7 est installé. Exécutez la commande ci-dessous pour installer le dépôt epel.
$sudo yum install epel-release
Mettez à jour l’index des paquets système en exécutant la commande update ci-dessous.
$sudo yum update -y
Une fois le dépôt installé, installez Ansible avec le gestionnaire de paquets yum. Exécutez la commande mentionnée ci-dessous pour installer Ansible.
$sudo yum install ansible -y
Vérifier si Ansible est installé correctement et sa version.
$ansible -v
Installer Ansible sur CentOS 8:
Regardons les étapes d’installation pour CentOS 8. Installons python sur CentOS 8.
$sudo dnf install python3
Une fois, python est installé, installons EPEL repo en exécutant la commande ci-dessous.
$sudo dnf install epel-release -y
Mettons à jour l’index des paquets du système en exécutant la commande update ci-dessous.
$sudo dnf update -y
Nous sommes maintenant prêts à installer Ansible. Exécutez la commande ci-dessous pour installer Ansible.
$sudo dnf install ansible -y
Vérifiez si Ansible est installé correctement et sa version.
$ansible -v
Installer Ansible sur Ubuntu:
Python est un paquet par défaut aujourd’hui dans la plupart des distributions Linux. Si vous n’avez pas installé python, exécutez la commande ci-dessous pour installer le paquet python.
$sudo apt-get install python3
Pour installer Ansible dans Ubuntu, installons d’abord le dépôt en exécutant la commande ci-dessous.
$sudo apt-add-repository ppa:ansible/ansible
Mettez à jour l’index des paquets du système en exécutant la commande update ci-dessous.
$sudo apt-get update -y
Maintenant, installez Ansible.
$sudo apt-get install -y ansible
Vérifiez si Ansible est installé correctement et sa version.
$ansible -v
Installer Ansible avec Python PIP sur CentOS, Debian et Ubuntu:
Quel que soit le système d’exploitation que vous utilisez, vous pouvez installer Ansible avec l’installateur de paquets python. Exécutons la commande ci-dessous pour installer python3-pip.
Pour CentOS 7 et inférieur:
$sudo yum install python3 python3-pip -y
Pour CentOS 8:
$sudo dnf install python3 python3-pip -y
Pour Ubuntu et Debian:
$sudo apt-get install python3 python3-pip
Comme nous avons installé python et pip, exécutons la commande ci-dessous sur n’importe quel système d’exploitation pour installer Ansible.
$sudo pip3 install ansible
Vérifiez si Ansible est installé correctement et sa version.
$ansible -v
Configuration des hôtes du contrôleur Ansible:
Nous devons d’abord configurer le fichier « hosts » avant de pouvoir commencer à communiquer avec nos autres nœuds. Ce fichier aura toutes les IP ou noms d’hôtes des nœuds gérés.
Note : Il n’est pas toujours nécessaire d’utiliser un fichier hosts pour se connecter aux nœuds gérés. Mais alors chaque fois, nous devons utiliser l’IP ou le nom d’hôte du serveur du nœud géré tout en exécutant chaque commande.
Créer le fichier (s’il n’est pas déjà là) avec les privilèges de root en exécutant la commande ci-dessous:
$sudo touch /etc/ansible/hosts
Avant d’écrire dans le fichier, jetons un coup d’œil et comprenons l’exemple de fichier hosts:
alias ansible_ssh_host=your_node_server_ip
Un fichier hosts doit suivre la syntaxe ci-dessus. Jetons un coup d’oeil à chaque paramètre.
: Ce paramètre va créer un groupe. Toutes les adresses IP des nœuds gérés ou les noms d’hôtes sous le paramètre group_name tomberont dans le même groupe. Par exemple, si nous avons plusieurs serveurs web dans notre infrastructure, nous pouvons ajouter toutes les adresses IP ou les noms d’hôte du nœud géré ici.
alias : Ce paramètre est utilisé pour donner au serveur du nœud géré un alias pour identifier le serveur du nœud géré. Par exemple, si nous avons plusieurs serveurs web dans notre infrastructure, nous pouvons donner host1, host2, host3 comme alias. Le principal avantage de donner un alias est que lorsque nous exécuterons la commande Ansible pour modifier la configuration d’un seul serveur, nous pouvons utiliser un alias pour identifier et exécuter la tâche requise sur le serveur.
ansible_ssh_host=votre_node_server_ip : Ce paramètre fera pointer l’alias vers une adresse IP de nœud géré ou un nom d’hôte.
Nous allons utiliser le CentOS 8 comme nœud contrôlé avec Ansible. Comme mentionné ci-dessus, Ansible utilise le port 22 de l’hôte distant pour se connecter.
Nous allons supposer que les adresses IP de notre serveur de nœuds gérés CentOS sont 192.168.0.2, 192.168.0.3 et 192.168.0.4.
Pour permettre au nœud contrôleur Ansible de communiquer avec les nœuds gérés, nous devons confirmer que les nœuds gérés sont accessibles sur le port 22 qui est un port SSH. Exécutez la commande ci-dessous pour confirmer la connectivité un par un sur les trois nœuds gérés à partir du contrôleur.
$ssh [email protected]
$ssh [email protected]
$ssh [email protected]
Vous serez invité à saisir le mot de passe de l’utilisateur root de tous les nœuds. Ansible fonctionne très bien si vous avez configuré une authentification sans mot de passe entre le contrôleur Ansible et les nœuds gérés. Avec différents paramètres dans la commande Ansible, l’authentification par mot de passe peut également fonctionner.
Comme nous avons configuré la connectivité ssh entre le contrôleur Ansible et les nœuds gérés, configurons le fichier hosts pour nous connecter à tous les nœuds gérés. Comme mentionné précédemment, nous pouvons ajouter plusieurs alias de serveur de nœuds dans un seul groupe. Dans ce cas, ajoutons les trois nœuds et attribuons un alias comme host1, host2 et host3 respectivement. Notre fichier hosts devrait ressembler à ce qui suit après avoir ajouté tous les détails des nœuds gérés. Exécutez la commande ci-dessous pour modifier le fichier hosts que nous avons créé auparavant.
Ouvrez le fichier avec les privilèges de root en exécutant la commande ci-dessous :
$sudo vi /etc/ansible/hosts
Ajoutons la configuration mentionnée ci-dessous dans le fichier hosts.
host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4
Ici, nous avons ajouté toutes les IP des nœuds gérés et les alias dans un groupe appelé node_servers.
Essayons maintenant de nous connecter aux nœuds gérés depuis le contrôleur Ansible.
$ansible -m ping node_servers
La commande ci-dessus utilise un module ping pour se connecter au groupe « node_servers » que nous avons défini dans le fichier hosts ci-dessus.
Vous pouvez rencontrer des erreurs pour différentes raisons.
- Ansible va, par défaut, essayer de se connecter au nœud géré en utilisant votre nom d’utilisateur actuel si vous n’en avez pas fourni un. Si cet utilisateur n’existe pas sur le serveur du nœud, vous recevrez l’erreur ci-dessous.
- Si le port 22 de ssh n’est pas ouvert à la connexion sur les nœuds gérés. (Comme mentionné précédemment, Ansible se connecte sur le port ssh)
- Si l’IP dans le fichier hosts n’est pas correct.
Si l’une des conditions ci-dessus échoue, vous rencontrerez l’erreur ci-dessous.
host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host2 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host3 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
Disons spécifiquement à Ansible qu’il doit se connecter aux nœuds gérés dans le groupe « node_servers » avec l’utilisateur james. Créez le répertoire group_vars comme mentionné ci-dessous.
$sudo mkdir /etc/ansible/group_vars
Les fichiers de ce répertoire sont spécifiquement utilisés pour configurer les variables que nous pouvons utiliser dans nos playbooks Ansible.
Créons un fichier de variables pour notre configuration en exécutant la commande ci-dessous :
$sudo vim /etc/ansible/group_vars/node_servers.yml
Ajoutons le code ci-dessous au fichier :
---
ansible_ssh_user: james
Le fichier YML commence toujours par « — » dans la première ligne. Sauvegardons et fermons ce fichier lorsque vous avez terminé. Maintenant, Ansible utilisera toujours l’utilisateur james pour le groupe node_servers, quel que soit l’utilisateur actuel que vous utilisez pour exécuter une commande.
Vérifier la connexion du nœud géré :
Maintenant que nous avons nos hôtes configurés et suffisamment de détails de configuration pour nous permettre de nous connecter avec succès à nos nœuds gérés, nous pouvons essayer la même commande que nous avons exécutée auparavant.
$ansible -m ping servers
Ansible retournera une sortie comme celle-ci :
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host3 | SUCCESS => { « changed » : false, « ping » : « pong »}
C’est un test de base pour s’assurer qu’Ansible a une connexion à ses nœuds gérés.
Conclusion :
Il n’est pas nécessaire d’utiliser le système d’exploitation CentOS pour les nœuds gérés. Vous pouvez utiliser la même configuration de test que nous avons utilisée ci-dessus pour CentOS, RedHat, Ubuntu et toute autre distribution Linux.
.