Services Linux 2026-04-11

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é (root ou sudo).
  • Python 3.11+ installé (natif sur Debian 13).
  • Connectivité SSH autorisée vers les machines cibles (nœuds managés).

2. Sommaire

  1. Mise à jour du système et installation d'Ansible
  2. Gestion des clés SSH (Authentification sans mot de passe)
  3. Configuration de l'inventaire des hôtes
  4. Paramétrage du fichier de configuration global
  5. Test de connectivité (Module Ping)
  6. 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.