Installation et Configuration d'Ansible sur Debian 13 (Trixie)
Documentation technique pour le déploiement de l'outil d'automatisation Ansible au sein de l'infrastructure mpr-if.infra
1. Informations Générales
- Domaine Infrastructure :
mpr-if.infra - Version Ansible : 2.14+ (Core)
1.1 Prérequis
- Système Debian 13 (Trixie) à jour.
- Accès privilégié (
rootousudo). - Python 3.11+ installé (natif sur Debian 13).
- Connectivité SSH autorisée vers les machines cibles (nœuds managés).
2. Sommaire
- Mise à jour du système et installation d'Ansible
- Gestion des clés SSH (Authentification sans mot de passe)
- Configuration de l'inventaire des hôtes
- Paramétrage du fichier de configuration global
- Test de connectivité (Module Ping)
- Création et exécution d'un premier Playbook
3. Installation d'Ansible
3.1 Mise à jour et installation
Sur Debian 13, Ansible est disponible directement dans les dépôts officiels. Nous installons également sshpass pour faciliter le déploiement initial des clés SSH.
apt update && apt upgrade -y
apt install -y ansible sshpass python3-pip
3.2 Vérification de la version
ansible --version
4. Configuration des accès SSH
Ansible étant "agentless", il utilise SSH pour communiquer avec les serveurs. L'usage de clés SSH est recommandé pour l'automatisation.
4.1 Génération de la paire de clés sur le serveur Ansible
# Génération sans mot de passe pour l'automatisation
ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa
4.2 Déploiement de la clé vers une machine cible (ex: GLPI)
# Remplacer par l'IP de la machine cible
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.192.194.101
5. Configuration de l'Inventaire
L'inventaire définit les machines que Ansible doit piloter. Créez un dossier de projet pour centraliser vos fichiers.
mkdir -p /etc/ansible/projects/mpr-infra
cd /etc/ansible/projects/mpr-infra
nano hosts
5.1 Exemple de fichier hosts (format INI)
[webservers]
glpi-server ansible_host=10.192.194.101
[firewalls]
opnsense-gw ansible_host=10.192.194.254
[linux:children]
webservers
6. Configuration globale (ansible.cfg)
Pour éviter de spécifier l'inventaire à chaque commande, on crée un fichier de configuration local au projet.
nano ansible.cfg
6.1 Contenu du fichier
[defaults]
inventory = ./hosts
remote_user = root
host_key_checking = False
retry_files_enabled = False
7. Tests de connectivité
Avant de lancer des scripts complexes, on utilise le module ping pour vérifier la liaison avec tout l'inventaire.
ansible all -m ping
Résultat attendu :
glpi-server | SUCCESS => {
"changed": false,
"ping": "pong"
}
8. Premier Playbook (Exemple)
Nous créons un Playbook pour mettre à jour automatiquement tous les serveurs Debian de l'infrastructure.
nano update_system.yml
8.1 Contenu du Playbook
---
- name: Mise à jour des serveurs Debian
hosts: linux
become: yes
tasks:
- name: Mise à jour du cache apt
apt:
update_cache: yes
upgrade: dist
8.2 Exécution
ansible-playbook update_system.yml
9. Sécurisation et Bonnes Pratiques
9.1 Ansible Vault
Pour stocker des mots de passe ou des clés API (ex: Token GitHub pour le backup OPNsense), utilisez Ansible Vault pour chiffrer les variables sensibles.
ansible-vault create vars_secrets.yml
9.2 Utilisateur dédié
Il est recommandé d'utiliser un utilisateur dédié (ex: ansible_user) avec des droits sudo plutôt que le compte root direct pour les opérations de maintenance.