GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer et tester Ansible sur Linux

Ansible est un outil de gestion de configuration largement utilisé écrit en langage Python qui permet de configurer une ou plusieurs machines en même temps. Ansible peut être utilisé pour effectuer les tâches ci-dessous

  • Configuration à partir de zéro d'un ou plusieurs nœuds
  • Déploiements
  • Modifications de configuration
  • Correction
  • Gestion des services
  • et bien d'autres

Ansible est largement utilisé en raison de sa simplicité. Le code Ansible est également écrit en langage YAML, il n'a pas besoin d'un agent pour être installé sur une machine distante. Ansible utilise le port 22 (SSH) pour se connecter à une machine distante et apporter les modifications nécessaires.

Toute machine pouvant se connecter à la machine distante sur 22 ports 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é est géré par des nœuds de contrôle.

Jetons un coup d'œil à l'installation d'Ansible sur le nœud du contrôleur.

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 référentiel CentOS 7 EPEL est installé. Exécutez la commande ci-dessous pour installer le référentiel epel.

$sudo yum install epel-release

Mettez à jour l'index du package système en exécutant la commande de mise à jour ci-dessous.

$sudo yum update -y

Une fois le référentiel installé, installez Ansible avec le gestionnaire de packages yum. Exécutez la commande mentionnée ci-dessous pour installer Ansible.

$sudo yum install ansible -y

Vérifiez si Ansible est correctement installé et sa version.

$ansible -v

Installer Ansible sur CentOS 8 :

Regardons les étapes d'installation de CentOS 8. Installons python sur CentOS 8.

$sudo dnf install python3

Une fois Python installé, installons le dépôt EPEL en exécutant la commande ci-dessous.

$sudo dnf install epel-release -y

Mettez à jour l'index du package système en exécutant la commande de mise à jour 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 correctement installé et sa version.

$ansible -v

Installer Ansible sur Ubuntu :

Python est actuellement un package par défaut dans la plupart des distributions Linux. Si vous n'avez pas installé python, exécutez la commande ci-dessous pour installer le package python.

$sudo apt-get install python3

Pour installer Ansible dans Ubuntu, installons d'abord le référentiel en exécutant la commande ci-dessous.

$sudo apt-add-repository ppa:ansible/ansible

Mettez à jour l'index du package système en exécutant la commande de mise à jour ci-dessous.

$sudo apt-get update -y

Maintenant, installez Ansible.

$sudo apt-get install -y ansible

Vérifiez si Ansible est correctement installé 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 le programme d'installation du package Python. Exécutons la commande ci-dessous pour installer python3-pip.

Pour CentOS 7 et versions antérieures :

$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 correctement installé et sa version.

$ansible -v

Configuration des hôtes Ansible Controller :

Nous devons d'abord configurer le fichier "hosts" avant de pouvoir commencer à communiquer avec nos autres nœuds. Ce fichier contiendra toutes les adresses IP ou les noms d'hôte des nœuds gérés.

Remarque :Il n'est pas toujours nécessaire d'utiliser un fichier hosts pour se connecter aux nœuds gérés. Mais à chaque fois, nous devons utiliser l'adresse IP ou le nom d'hôte du serveur de nœud géré lors de l'exécution de chaque commande.

Créez le fichier (s'il ne s'y trouve pas déjà) avec les privilèges root en exécutant la commande ci-dessous :

$sudo touch /etc/ansible/hosts

Avant d'écrire dans le fichier, examinons et comprenons un exemple de fichier d'hôtes :

[group_name]
alias ansible_ssh_host=your_node_server_ip

Un fichier hosts doit suivre la syntaxe ci-dessus. Examinons chaque paramètre.

[group_name] :Ce paramètre créera un groupe. Toutes les adresses IP ou tous les noms d'hôte des nœuds gérés sous le paramètre group_name appartiendront au même groupe. Par exemple, si nous avons plusieurs serveurs Web dans notre infrastructure, nous pouvons ajouter ici toutes les adresses IP ou les noms d'hôte du nœud géré.

alias :Ce paramètre est utilisé pour donner au serveur de nœud géré un alias pour identifier le serveur de 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 effectuer la tâche requise sur le serveur.

ansible_ssh_host=your_node_server_ip  :ce paramètre pointera l'alias vers une adresse IP ou un nom d'hôte de nœud géré.

Nous utiliserons CentOS 8 comme nœud contrôlé avec Ansible. Comme mentionné ci-dessus, Ansible utilise 22 ports de l'hôte distant pour se connecter.

Nous supposerons que les adresses IP de notre serveur de nœud géré CentOS sont 192.168.0.2, 192.168.0.3 et 192.168.0.4.

Pour permettre au nœud de 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]192.168.0.2
$ssh [email protected]192.168.0.3
$ssh [email protected]192.168.0.4

Vous serez invité à entrer 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 qu'il se connecte à tous les nœuds gérés. Comme mentionné précédemment, nous pouvons ajouter plusieurs alias de serveur de nœud 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 à ci-dessous après avoir ajouté tous les détails du nœud géré. Exécutez la commande ci-dessous pour modifier le fichier hosts que nous avons créé auparavant.

Ouvrez le fichier avec les privilèges root en exécutant la commande ci-dessous :

$sudo vi /etc/ansible/hosts

Ajoutons la configuration mentionnée ci-dessous dans le fichier hosts.

[node_servers]
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 adresses IP et alias des nœuds gérés dans un groupe appelé node_servers .

Essayons maintenant de nous connecter aux nœuds gérés à partir du 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.

  1. Ansible essaiera, par défaut, de se connecter au nœud géré à l'aide de votre nom d'utilisateur actuel si vous n'en avez pas fourni. Si cet utilisateur n'existe pas sur le serveur de nœud, vous recevrez l'erreur ci-dessous.
  2. Si le port ssh 22 n'est pas ouvert pour la connexion sur les nœuds gérés. (Comme mentionné précédemment, Ansible se connecte sur le port ssh)
  3. Si l'adresse IP dans le fichier hosts n'est pas correcte.

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 variable pour notre configuration en exécutant la commande ci-dessous :

$sudo vim /etc/ansible/group_vars/node_servers.yml


Ajoutez le code ci-dessous au fichier :

---
ansible_ssh_user: james

Le fichier YML commence toujours par "---" sur la première ligne. Enregistrons et fermons ce fichier lorsque vous avez terminé. Désormais, Ansible utilisera toujours le james utilisateur pour le groupe node_servers, quel que soit l'utilisateur actuel que vous utilisez pour exécuter une commande.

Vérifiez la connexion du nœud géré :

Maintenant que nos hôtes sont configurés et que nous avons 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 renverra une sortie comme celle-ci :

host1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

hôte3 | SUCCESS => {
    "changed":false,
    "ping":"pong"
}

Il s'agit d'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 celle que nous avons utilisée ci-dessus pour CentOS, RedHat, Ubuntu et toute autre distribution Linux.


Linux
  1. Comment installer et utiliser Flatpak sous Linux

  2. Comment installer et utiliser Traceroute sous Linux

  3. Comment installer et configurer Ansible sur Rocky Linux/CentOS 8

  4. Comment installer Ansible sur CentOS 8 Linux

  5. Comment installer Ansible sur Oracle Linux 8

Installer et configurer Ansible sous Linux

Comment installer et utiliser phpMyAdmin sous Linux

Comment installer et utiliser la commande fd sous Linux

Comment installer et utiliser Nu Shell sous Linux

Comment installer Ansible sur Ubuntu et d'autres distributions Linux

Comment installer Ansible sur Linux Mint 20