Pourquoi Ansible ?
Dans un monde où l’agilité prime, l’automatisation libère les équipes systèmes de tâches répétitives et minimise les erreurs humaines. Ansible se distingue par son approche agent‑less : une simple connexion SSH suffit pour piloter l’ensemble de l’infrastructure. Dans cet article, nous allons non seulement installer l’outil, mais aussi comprendre pourquoi chaque étape compte afin de partir sur des bases saines et évolutives.
Vue d’ensemble du laboratoire
Nous travaillerons sur cinq machines virtuelles Ubuntu 22.04 LTS :
10.10.4.10 control.lab.example.com control
10.10.4.11 servera.lab.example.com servera
10.10.4.12 serverb.lab.example.com serverb
10.10.4.13 serverc.lab.example.com serverc
10.10.4.14 serverd.lab.example.com serverd
Astuce : cette topologie miniature reproduit un parc mixte web, base de données et monitoring. Elle suffit pour expérimenter le cycle de vie complet d’un playbook.
1. Préparer le nœud de contrôle
1.1 Mettre le système à jour
Maintenir le nœud de contrôle à jour évite les incompatibilités de bibliothèques Python.
1.2 Installer les dépendances Python
1.3 Créer un environnement virtuel
Pourquoi ? Pour isoler la pile Python d’Ansible du système et faciliter les montées de version.
source ~/ansible-venv/bin/activate
1.4 Installer Ansible
pip install ansible ansible-core ansible-lint
Vérifiez l’installation :
ansible --version
Vous devez voir la version d’Ansible ainsi que le chemin de l’interpréteur Python pointant vers ~/ansible-venv
.
2. Sécuriser l’accès avec un utilisateur dédié
Créer un compte dédié renforce la traçabilité et évite de compromettre le compte root.
sudo useradd -m -s /bin/bash ansible
echo "ansible:ansible" | sudo chpasswd
sudo usermod -aG sudo ansible
echo "ansible ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ansible
Activez ensuite le même environnement virtuel pour ce compte :
sudo su - ansible
python3 -m venv ~/ansible-venv && source ~/ansible-venv/bin/activate
pip install ansible ansible-core
Ajoutez l’activation automatique dans ~/.bashrc
:
echo "source ~/ansible-venv/bin/activate" >> ~/.bashrc
3. Préparer les hôtes gérés
Sur le nœud de contrôle, exécutez :
for host in servera serverb serverc serverd; do
ssh root@${host}.lab.example.com "\
useradd -m -s /bin/bash ansible && \
echo 'ansible:ansible' | chpasswd && \
usermod -aG sudo ansible && \
echo 'ansible ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/ansible && \
mkdir -p /home/ansible/.ssh && chown ansible:ansible /home/ansible/.ssh"
done
Puis copiez votre clé publique :
for host in servera serverb serverc serverd; do
ssh-copy-id ansible@${host}.lab.example.com
done
Bonnes pratiques :
Utiliser des clés ed25519 pour de meilleures performances.
Désactiver
StrictHostKeyChecking
dans un lab, mais pas en production !
4. Structurer l’inventaire et la configuration
4.1 Inventaire statique minimal
[webservers]
servera.lab.example.com
serverb.lab.example.com
[databases]
serverc.lab.example.com
[monitoring]
serverd.lab.example.com
[all_servers:children]
webservers
databases
monitoring
Enregistrez ce contenu dans ~/ansible-labs/inventory
.
4.2 ansible.cfg
Un fichier de configuration local évite de répéter les options en ligne de commande :
[defaults]
inventory = inventory
remote_user = ansible
host_key_checking = False
stdout_callback = yaml
[privilege_escalation]
become = True
become_method = sudo
5. Premier contact avec vos serveurs
Activez l’environnement virtuel :
source ~/ansible-venv/bin/activate
5.1 Ping de validation
ansible all -m ping
Tous les hôtes doivent répondre success.
5.2 Récupérer l’OS de chaque hôte
ansible all -m command -a "lsb_release -d"
Vous obtenez une vue d’ensemble des distributions, pratique avant un patch global.
6. Aller plus loin
Vous voilà prêts à écrire vos premiers playbooks. Dans un prochain article, nous verrons comment rendre vos déploiements idempotents et gérer des variables complexes grâce aux group_vars.