Ansible Installation · 8 min read · Dec 19, 2025

Comment installer et configurer Ansible sur Ubuntu 20.04

Ansible est un outil de gestion de configuration très populaire conçu pour simplifier le processus de contrôle d’un grand nombre de serveurs. Vous pouvez contrôler autant de serveurs et exécuter des processus sur eux simultanément à partir d’un seul nœud.

Ansible ne nécessite aucun logiciel spécial à installer sur les nœuds du serveur et peut les contrôler via SSH.

Dans ce guide, nous allons apprendre à installer et configurer Ansible sur un serveur Ubuntu 20.04.

Prérequis

  • Deux systèmes serveurs basés sur Ubuntu 20.04 avec le serveur OpenSSH installé.
  • Le serveur et les nœuds sont accessibles via des adresses IP publiques.
  • Un utilisateur non-root avec des privilèges sudo configuré sur le serveur Ansible et un utilisateur root avec un mot de passe configuré sur les clients Ansible.

Installer Ansible

Le dépôt officiel d’Ansible ne prend pas en charge Ubuntu 20.04 en raison d’un bug dans la bibliothèque python d’Ubuntu au moment de la rédaction de ce tutoriel.

Heureusement, Ubuntu est livré avec Ansible 2.9, qui est ce que nous allons installer. Exécutez la commande suivante pour installer Ansible.

$ sudo apt install ansible -y

Testez votre installation en exécutant la commande suivante.

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

Configuration du fichier d’inventaire

Pour pouvoir se connecter à plusieurs hôtes, vous avez besoin d’un fichier qui enregistrera les détails des nœuds. Ce fichier s’appelle le fichier d’inventaire.

En fonction du nombre de serveurs que vous souhaitez contrôler, le fichier d’inventaire d’Ansible vous permet également de les organiser en groupes et sous-groupes. Vous pouvez également définir des variables personnalisées applicables à des hôtes ou groupes sélectionnés qui peuvent être utilisées ultérieurement lors de la transmission des instructions.

Ansible est livré avec un fichier d’inventaire par défaut disponible à /etc/ansible/hosts. Ouvrez-le avec l’éditeur Nano.

$ sudo nano /etc/ansible/hosts

Collez le code suivant au bas du fichier.

[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[all:vars]
ansible_python_interpreter=/usr/bin/python3

La section servers définit la liste des nœuds auxquels vous souhaitez vous connecter. Vous pouvez créer autant de groupes que nécessaire pour organiser les serveurs en plusieurs groupes.

Le groupe all:vars définit le paramètre ansible_python_interpreter sur tous les hôtes de l’inventaire. Cela garantit qu’Ansible utilise l’exécutable Python 3 au lieu de Python 2, qui a été supprimé des versions récentes d’Ubuntu.

Lorsque vous avez terminé, enregistrez et fermez le fichier en appuyant sur CTRL+X, puis Y et ENTRER pour confirmer vos modifications.

Remarque : Vous pouvez également créer votre propre fichier d’inventaire à tout emplacement de votre choix que vous pouvez ensuite passer en utilisant le paramètre -i lors de l’exécution des commandes Ansible.

Vous pouvez vérifier votre liste d’inventaire avec la commande suivante.

$ ansible-inventory --list -y
all:
  children:
    servers:
      hosts:
        server1:
          ansible_host: 203.0.113.111
          ansible_python_interpreter: /usr/bin/python3
        server2:
          ansible_host: 203.0.113.112
          ansible_python_interpreter: /usr/bin/python3
        server3:
          ansible_host: 203.0.113.113
          ansible_python_interpreter: /usr/bin/python3
    ungrouped: {}

Organisation des serveurs en groupes et sous-groupes

C’est un conseil utile si vous avez beaucoup de serveurs avec certains serveurs effectuant des fonctions spécifiques. Par exemple, vous pouvez utiliser cette méthode pour regrouper les serveurs web et les serveurs de base de données séparément. Vous pouvez même faire en sorte qu’un hôte fasse partie de plusieurs groupes. Pour y parvenir, votre fichier d’inventaire devrait ressembler à ceci.

[webservers]
203.0.113.111
203.0.113.112

[dbservers]
203.0.113.113
server_hostname

[development]
203.0.113.111
203.0.113.113

[production]
203.0.113.112
server_hostname

Configurer les clés SSH

Pour qu’Ansible puisse se connecter aux serveurs, vous devez configurer des clés SSH entre votre serveur Ansible et les hôtes spécifiés dans le fichier d’inventaire. Cela ne fonctionnera que si les clients Ansible n’ont pas de clé publique activée et ont un compte root activé avec un mot de passe.

Utilisez les étapes suivantes pour créer et configurer une clé SSH pour Ansible et ses nœuds.

Créez la clé pour Ansible.

$ ssh-keygen -t rsa -b 4096 -C "Clé Ansible"

Copiez la clé publique sur vos comptes sur les serveurs distants. Pour cela, nous utiliserons la commande ssh-copy-id.

$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]

C’est tout. Maintenant, Ansible devrait être capable de communiquer avec vos serveurs.

Configuration des clés SSH sur les nœuds avec une clé publique existante

Si les clients ont déjà des clés publiques activées, vous devrez suivre certaines étapes supplémentaires. Pour cela, vous devez créer un nouvel utilisateur accessible uniquement par Ansible sur chaque serveur nœud. Cet utilisateur aura des privilèges sudo accessibles sans mot de passe et pourra être accessible uniquement depuis votre serveur Ansible.

Pour créer un utilisateur ansible, exécutez la commande suivante.

$ sudo adduser ansible

Choisissez un mot de passe fort et laissez tous les autres champs vides.

Maintenant, configurez l’accès sudo sans mot de passe pour cet utilisateur via la commande suivante.

$ echo "ansible ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ansible

Maintenant que vous avez ajouté et configuré le nouvel utilisateur, vous pouvez copier la clé SSH de votre serveur Ansible vers le serveur nœud en utilisant la commande suivante.

$ ssh-copy-id [email protected]

Vous serez invité à entrer le mot de passe pour l’utilisateur ansible. Entrez-le et la clé SSH sera copiée.

Ensuite, désactivez la connexion par mot de passe pour l’utilisateur ansible sur le serveur nœud.

$ sudo usermod -L ansible

Maintenant, votre serveur nœud n’est accessible que depuis le serveur Ansible, car seul ce serveur a la clé publique pour celui-ci et vous ne pouvez pas l’utiliser avec des privilèges sudo sur le serveur nœud directement, car la connexion par mot de passe est désactivée.

Vous devrez répéter ces étapes pour chaque serveur nœud. Remplacez également l’utilisateur root par l’utilisateur ansible dans ce tutoriel.

Tester la connexion

Après avoir configuré le fichier d’inventaire et les clés SSH, nous devrions vérifier si Ansible est capable de se connecter aux serveurs.

Tapez la commande suivante pour vérifier la connexion. Cette commande testera la connexion à tous les serveurs du fichier d’inventaire.

$ ansible all -m ping -u root

Cette commande utilise le module ping d’Ansible pour effectuer un test de connectivité sur tous les serveurs. Vous devriez obtenir une sortie comme suit.

server1 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
server2 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
server3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Si c’est la première fois que vous utilisez Ansible, vous serez invité à confirmer l’authenticité de tous les serveurs. Lorsque vous y êtes invité, tapez yes et appuyez sur ENTRER pour confirmer.

Exécuter quelques commandes de base

Exécutons quelques commandes de base sur les serveurs en utilisant Ansible. Pour exécuter une commande sur le serveur, le format suivant est utilisé.

$ ansible all -a "commande" -u 

Vérifier l’utilisation du disque

Tout d’abord, vérifions l’utilisation du disque sur tous nos serveurs.

$ ansible all -a "df -h" -u root
server1 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           798M  624K  798M   1% /run
/dev/vda1       155G  2.3G  153G   2% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/vda15      105M  3.6M  101M   4% /boot/efi
tmpfs           798M     0  798M   0% /run/user/0

server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           395M  608K  394M   1% /run
/dev/vda1        78G  2.2G   76G   3% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda15      105M  3.6M  101M   4% /boot/efi
tmpfs           395M     0  395M   0% /run/user/0

Cibler des hôtes et des groupes individuels

Jusqu’à présent, nous exécutons des commandes sur tous les serveurs distants à la fois. Mais ce n’est pas toujours le cas. Pour exécuter une commande sur un seul serveur, vous devez utiliser le format suivant.

$ ansible server1 -a "uptime" -u root
server1 | CHANGED | rc=0 >>
 21:38:26 up 11 min,  2 users,  load average: 0.00, 0.20, 0.19

La commande ci-dessus vérifie le temps de fonctionnement sur server1 à partir du groupe d’inventaire.

Vous pouvez également cibler plusieurs serveurs en utilisant le format suivant.

$ ansible server1:server2 -m ping -u root

Vous pouvez également cibler des groupes ou sous-groupes directement à partir du fichier d’inventaire.

$ ansible groupname -m ping -u 

Mettre à jour tous les serveurs

Pour ce tutoriel, nous supposons que tous les serveurs distants exécutent Debian ou Ubuntu OS.

Exécutez la commande suivante pour mettre à jour le logiciel sur tous vos serveurs.

$ ansible all -m apt -a "update_cache=yes upgrade=yes" -u root

Le paramètre -m définit le module qu’Ansible doit exécuter. -a fait référence aux arguments ou commandes pour le module associé. Ici, nous utilisons le module apt d’Ansible pour mettre à jour les serveurs tout comme nous avons utilisé le module ping dans notre dernier exemple. update_cache met à jour le cache APT sur le serveur et upgrade=yes indique à Ansible d’exécuter la commande apt upgrade.

Pour mettre à jour vos serveurs CentOS, vous pouvez utiliser la même commande en remplaçant apt par yum et pour les serveurs Fedora, vous pouvez remplacer apt par dnf.

Si vous utilisez l’utilisateur ansible comme documenté ci-dessus, vous devez modifier la commande ansible pour qu’elle s’exécute avec des privilèges sudo élevés.

$ ansible server2 -m apt -a "update_cache=yes upgrade=yes" -K -b -u ansible

Ici, -K demande le mot de passe d’escalade de privilèges. -b exécute l’opération ansible avec become qui vous permet d’être un autre utilisateur. Les deux variables combinées permettent à ansible de s’exécuter avec des privilèges sudo élevés. Vous devrez utiliser cela pour toutes les commandes qui nécessitent des privilèges sudo.

Parfois, certaines de ces commandes de mise à jour peuvent nécessiter un redémarrage, alors exécutez la commande suivante pour redémarrer tous vos serveurs.

$ ansible all -a "reboot" -u root

Ce ne sont là que quelques-unes des commandes de base que vous pouvez exécuter en utilisant Ansible.

Conclusion

Cela conclut notre tutoriel sur l’installation et la configuration d’Ansible sur un serveur basé sur Ubuntu 20.04. Si vous avez des questions, posez-les dans les commentaires ci-dessous.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.