Recherche de site Web

Installer et configurer Ansible sous Linux


Ce guide étape par étape vous guide à travers les étapes d'installation et de configuration d'Ansible sous Linux. Il explique également comment configurer Ansible homelab sous Linux pour apprendre les bases d'Ansible.

1. Introduction

Ansible est un outil d'automatisation informatique grâce auquel vous pouvez automatiser un nombre « N » de tâches dans votre environnement logiciel. Pour savoir ce qu'est Ansible et ses fonctionnalités, consultez notre guide « Introduction à Ansible ».

Ansible est évidemment conçu pour la gestion de configuration à grande échelle. Si votre objectif est d’apprendre et de pouvoir recréer votre environnement rapidement, alors vous êtes sur la bonne voie !

Ansible est une architecture sans agent. Signification : aucun agent/processus ansible n'est exécuté sur les nœuds gérés.

Comme je l'ai déjà mentionné dans l'article d'introduction d'Ansile, il existe deux types de nœuds dans ansible.

  • Nœud maître/contrôleur - Serveur/poste de travail sur lequel ansible sera installé. À partir de ce nœud, vous exécuterez tous les playbooks et commandes ansible.
  • Nœuds gérés : liste des hôtes qui seront gérés à l'aide d'ansible.

Il n’est pas nécessaire que tous les nœuds gérés s’exécutent avec la même version ou le même type de distribution. Vous pouvez avoir différentes versions de Linux en tant que nœuds gérés.

La communication entre le contrôleur et les nœuds gérés s'effectuera à l'aide de l'authentification par clé SSH.

Ce guide pratique vous apprendra comment configurer Ansible Lab dans les distributions Linux.

Remarque :

  1. Vous ne pouvez pas utiliser Windows comme nœud de contrôleur.
  2. Il est possible de configurer plusieurs nœuds de contrôleur.

Avant de commencer avec Ansible, permettez-moi de vous montrer la représentation picturale de ma configuration Ansible homelab.

2. Schéma architectural pour le laboratoire Ansible à 3 nœuds

L'illustration graphique suivante vous donne une belle représentation picturale de l'apparence du laboratoire.

Ma configuration Ansible homelab

À des fins de démonstration, je configure un nœud Controller sur Ubuntu 20.04 et 2 nœuds gérés sur CentOS 8 et Ubuntu 21.04.

3. Installer et configurer Ansible sous Linux

Tout d’abord, nous verrons comment configurer le nœud géré Ansible sous Linux.

3.1. Installer Ansible sous Linux

Étant donné qu'Ansible est écrit en Python, votre machine Linux doit avoir Python installé pour qu'Ansible fonctionne.

Heureusement, toutes les distributions Linux sont livrées avec Python préinstallé. Ansible prend en charge à la fois Python 2.7 et Python 3.5 et versions ultérieures.

Pour vérifier quelle version de python est installée sur votre ordinateur, vous pouvez utiliser les commandes suivantes. Le résultat peut varier en fonction de la façon dont Python est configuré dans votre distribution.

$ which python python2 python3
/usr/bin/python2
/usr/bin/python3

Vérifiez la version de Python :

$ python2 --version
Python 2.7.18rc1
$ python3 --version
Python 3.8.5
$ compgen -c python | grep -P '^python..\d'
python3.8
python3.8-config
python2.7

Vous pouvez installer ansible sous Linux de deux manières.

  1. Utilisation du gestionnaire de packages du système d'exploitation
  2. Utilisation de PIP - Gestionnaire de packages Python

3.1.1. Installer Ansible à l'aide du gestionnaire de packages système

Tout d’abord, nous verrons comment utiliser le gestionnaire de packages de votre distribution pour installer ansible. En fonction de votre distribution Linux, exécutez les commandes suivantes.

Installez Ansible dans Arch Linux, EndeavourOS, Manjaro Linux :

sudo pacman -S ansible

Debian :

Editez le fichier /etc/apt/sources.list :

sudo nano /etc/apt/sources.list

Ajoutez la ligne suivante :

deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main

Exécutez ensuite les commandes suivantes :

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
sudo apt update
sudo apt install ansible

Fedora :

sudo dnf install ansible

CentOS, RHEL, AlmaLinux, Rocky Linux :

sudo dnf install epel-release
sudo dnf install ansible

Ubuntu et ses dérivés :

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

Votre distribution peut être livrée avec une version obsolète d'Ansible. Si vous souhaitez installer une version mise à jour d'Ansible sur votre système, vous pouvez utiliser Pip, le gestionnaire de packages Python.

3.1.2. Installer Ansible à l'aide de Pip

Tout d’abord, vérifiez si PIP est installé en exécutant les commandes suivantes :

$ which pip pip3
/usr/bin/pip
/usr/bin/pip3
$ pip --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
$ pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

Si PIP n'est pas installé, exécutez les commandes suivantes pour l'installer.

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --user

Une fois PIP installé, exécutez la commande suivante pour installer ansible :

sudo python3 -m pip install ansible

Cela installera la dernière version d'Ansible.

Vous pouvez également installer une version spécifique d'Ansible, par exemple 2.9, comme ci-dessous :

sudo python3 -m pip install 'ansible==2.9'

Après avoir installé Ansible, exécutez la commande suivante pour vérifier la version d'Ansible :

ansible --version

Cette commande donne des informations sur l'emplacement de votre fichier hôte, de votre fichier de configuration et de votre fichier binaire ansible et sur la version d'Ansible installée.

Exemple de résultat :

ansible 2.9.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/karthick/.ansible/plugins/modules',
  '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

3.2. Configurer Ansible

Comme indiqué précédemment, Ansible communiquera avec les nœuds gérés à l'aide du protocole d'authentification ssh.

Nous allons créer une paire de clés ssh et les distribuer sur tous les nœuds gérés. Ainsi, chaque fois qu'une commande ansible est soumise, elle s'authentifiera auprès des nœuds gérés à l'aide de ces clés.

3.2.1. Générer une paire de clés SSH pour les nœuds gérés

Créez un nouvel utilisateur appelé ansible dans le contrôleur et les nœuds gérés.

sudo useradd ansible               ##create user 
sudo passwd ansible                ##set password for ansible user.

Connectez-vous/changez en tant qu'utilisateur ansible et créez une paire de clés ssh à l'aide des commandes :

su - ansible
ssh-keygen -t rsa

Cette commande générera une paire de clés SSH.

Distribuez maintenant la clé publique à tous les nœuds gérés.

Vous pouvez utiliser la commande ssh-copy-id pour copier la clé publique sur le nœud cible.

Pour copier la clé publique sur le nœud cible avec la commande ssh-copy-id, exécutez :

ssh-copy-id -i ~/.ssh/id_rsa ansible@host-name

Si vous avez plus de nœuds, utilisez la for loop pour copier la clé ssh sur tous les nœuds cibles.

Pour les besoins de ce guide, j'ai 2 nœuds gérés et je les ai nommés centos1 (centos8) et ubuntu1 (ubuntu 20.04). Pour copier la clé sur les deux nœuds, j'ai utilisé le code suivant :

for node in centos1 ubuntu1; do ssh-copy-id -i /home/ansible/.ssh/id_rsa ansible@${node} done

Copier les clés SSH sur les nœuds cibles

Connectez-vous maintenant à votre nœud géré pour vérifier si l'authentification par clé fonctionne correctement.

ssh username@hostname

La configuration d'Ansible est maintenant terminée. À l'étape suivante, un fichier d'inventaire doit être créé et exécuter certaines commandes ansible sur les hôtes gérés.

3.2.2. Tester la configuration d'Ansible

Ansible possède deux fichiers importants qui sont requis pour soumettre des commandes Adhoc ou playbook.

  1. Ansible.cfg - fichier de configuration ansible.
  2. Hôtes - Fichier d'inventaire où les détails de l'hôte sont fournis.

Eh bien, discutez plus en profondeur des fichiers de configuration et d'inventaire dans un article séparé. Au moment d'exécuter la première commande ansible, il vous suffit d'ajouter les noms d'hôte de vos nœuds gérés dans le fichier d'inventaire.

Le fichier de configuration Ansible se trouve dans le fichier /etc/ansible/ansible.cfg. Vous pouvez également obtenir ces détails en exécutant la commande ansible version :

$ ansible --version
ansible 2.9.0
 config file = /etc/ansible/ansible.cfg
 configured module search path = ['/home/karthick/.ansible/plugins/modules',
'/usr/share/ansible/plugins/modules']
 ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
 executable location = /usr/local/bin/ansible
 python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

Ouvrez le fichier ansible.cfg et recherchez l'inventaire des paramètres. Ce paramètre sera référencé par ansible lors de l'exécution pour obtenir le chemin du fichier d'inventaire.

$ sudo grep -iw "^#Inventory" /etc/ansible/ansible.cfg
#inventory        = /etc/ansible/hosts

L'inventaire pointe par défaut vers le fichier /etc/ansible/hosts . Ouvrez le fichier hosts et ajoutez le nom d'hôte/l'adresse IP du nœud géré.

J'ai un mappage DNS vers IP, j'ai donc donné le nom DNS dans le fichier de l'hôte. Vous pouvez également donner l'adresse IP.

Fichier d'inventaire Ansible

Tout est mis en place pour exécuter notre tâche dans ansible !

Semblable au programme "Hello world" en programmation, ansible a également pour tradition d'exécuter un ping comme première commande pour vérifier la connectivité entre le contrôleur et les nœuds gérés.

Le module ping tentera d'atteindre les nœuds gérés et vérifiera si un interpréteur Python est disponible à utiliser et répondra comme pong.

ansible all -m ping

Vous pouvez également spécifier explicitement le fichier hosts en utilisant l'indicateur -i comme ci-dessous :

ansible all -m ping -i flag <path-to-host-file>

Module Ansible-ping

Vous pouvez maintenant commencer à jouer avec le module avec lequel vous souhaitez jouer.

Si vous souhaitez ajouter plus de nœuds de contrôleur, il vous suffit de copier la clé SSH du nœud de contrôleur vers le nouveau nœud et d'ajouter l'entrée IP/DNS dans le fichier de l'hôte. Et puis, ansible peut commencer à récupérer le nœud géré nouvellement ajouté. C'est aussi simple que ça !

Conclusion

Dans ce guide, nous avons expliqué comment installer et configurer Ansible sous Linux. Nous vous avons également montré comment configurer manuellement un homelab Ansible à trois nœuds.

Il existe d'autres solutions automatisées, comme la configuration d'Ansible Lab à l'aide de Vagrant ou de Docker. Nous aborderons ces sujets dans nos prochains articles.

Ansible est un vaste sujet ! Nous n'avons couvert que les bases d'Ansible. Consultez la documentation officielle d'Ansible pour en savoir plus sur l'utilisation d'Ansible.

Lire ensuite :

  • Configuration automatisée d'Ansible Lab avec Vagrant et Virtualbox sous Linux
  • Fichiers d'inventaire et de configuration Ansible

Articles connexes