---
title: Ansible
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, automation, devops, it-automation, configuration-management, python, yaml]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Automation, https://github.com/ansible/ansible]
---

# 🛠️ Ansible

> **L'étalon-or de l'automatisation IT** — provisionnez, configurez et orchestrez vos serveurs en déclarant l'état deseado dans du YAML lisible. Sans agent, sans état centralisé, sans prise de tête.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [ansible.com](https://www.ansible.com/) |
| **GitHub** | [ansible/ansible](https://github.com/ansible/ansible) |
| **License** | GPL-3.0 |
| **Langage** | Python (moteur) / YAML (playbooks) |
| **Étoiles GitHub** | 24 143 ⭐ |
| **Dernière MAJ** | 2026-06-05 |
| **Catégorie** | [[cat-automation\|Automation]] |

## 📝 Description

**Ansible** est l'outil d'**automatisation IT agentless** le plus déployé au monde, édité par Red Hat et utilisé par des organisations de toutes tailles — du homelab à la NASA. Sa philosophie est radicale : **pas d'agent à installer sur les hôtes cibles** (on se connecte juste en SSH ou WinRM) et **une syntaxe déclarative en YAML** qui décrit l'état désiré plutôt que les étapes pour y arriver. Résultat : des playbooks lisibles par des humains, versionnables dans Git, et applicables à 1 ou 10 000 machines.

Le moteur d'Ansible est écrit en Python et fonctionne en **mode push** : depuis un nœud de contrôle (souvent un laptop ou un serveur dédié), on lance un playbook qui se connecte aux cibles, copie des modules Python éphémères, les exécute, puis les nettoie. L'**idempotence** est au cœur du système : exécuter 10 fois le même playbook ne change rien à partir de la deuxième. Plus de 7 500 **modules** officiels couvrent l'essentiel (paquets, fichiers, services, cloud AWS/GCP/Azure, Docker, K8s, bases de données, réseau Cisco/Juniper, etc.).

Pour les déploiements d'envergure, Ansible s'appuie sur **Ansible AWX** (la version open source d'Ansible Tower) ou sur des alternatives communautaires comme [[app-semaphore-ui|Semaphore UI]]. La **Ansible Galaxy** héberge des milliers de rôles réutilisables, et la **Ansible Community** produit une documentation parmi les meilleures de l'open source.

**Cas d'usage typiques** :
- Déployer et configurer 50 serveurs Ubuntu en une commande
- Appliquer un patch de sécurité sur 300 machines en 5 minutes
- Provisionner une infrastructure complète AWS/GCP (VPC, sous-réseaux, instances, SG)
- Orchestrer des rollouts applicatifs (blue/green, canary)
- Industrialiser la configuration réseau (BGP, OSPF, VLAN sur du Cisco)

## 🚀 Installation

### Prérequis
- Python 3.11+ sur le **nœud de contrôle** (les cibles n'ont besoin que de SSH et Python 2.7+/3.5+)
- Accès SSH aux hôtes cibles avec clé publique
- Linux, macOS ou WSL2 sur Windows

### Option 1 : pipx (recommandé, isolé)
```bash
sudo apt install -y pipx
pipx ensurepath
pipx install --include-deps ansible
ansible --version
```

### Option 2 : Docker (nœud éphémère)
```yaml
# docker-compose.yml — nœud de contrôle Ansible jetable
services:
  ansible:
    image: cytopia/ansible:latest-tools
    container_name: ansible-control
    restart: "no"
    working_dir: /ansible
    volumes:
      - ./inventories:/ansible/inventories:ro
      - ./playbooks:/ansible/playbooks:ro
      - ~/.ssh:/root/.ssh:ro        # clés SSH du contrôleur
      - ansible-cwd:/ansible        # état du runner
    environment:
      ANSIBLE_HOST_KEY_CHECKING: "False"
    tty: true
    stdin_open: true

volumes:
  ansible-cwd:
```

Utilisation :
```bash
docker compose run --rm ansible ansible-playbook -i inventories/prod.yml playbooks/site.yml
```

### Option 3 : Installation native (Ubuntu/Debian)
```bash
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install -y ansible
```

## ⚙️ Configuration

- **`ansible.cfg`** : fichier de config par projet (inventaire par défaut, forking, log_path, host_key_checking)
- **Inventaire** (`inventory.yml`) : déclarer les hôtes par groupes (webservers, dbservers, [all:vars] pour les variables globales)
- **Playbooks** : fichiers YAML listant les *plays* (ensembles de *tasks* sur un groupe d'hôtes)
- **Rôles** (`roles/`) : structurer un playbook complexe en tâches, handlers, templates, vars
- **Vault** : `ansible-vault encrypt group_vars/prod/vault.yml` pour chiffrer les secrets
- **Collections** : `ansible-galaxy collection install community.general` pour étendre les modules

Exemple minimal :
```yaml
# playbooks/hello.yml
- name: Ping mes serveurs
  hosts: webservers
  tasks:
    - name: Vérifier la connectivité
      ansible.builtin.ping:
```

## 🔗 Alternatives

### Open Source
- [[app-semaphore-ui|Semaphore UI]] — UI web pour piloter Ansible (⭐1,3k)
- **Puppet** — concurrent historique, modèle client/serveur avec agent
- **Chef** — Ruby, orienté "recipes" (état déclaratif)
- **Salt (SaltStack)** — agentless ou agent, plus rapide à grande échelle
- **Terraform** — complémentaire (infra-as-code déclaratif vs Ansible)
- **Bash + SSH en boucle** — pour les fans de l'auto-construction artisanale

### Propriétaires (ce qu'Ansible remplace)
- **Ansible Tower / Red Hat Ansible Automation Platform** — 14 000 $/an pour 100 nœuds
- **Puppet Enterprise** — 100 $/nœud/an
- **Chef Automate** — sur devis
- **CFEngine** — très ancien, encore utilisé dans le bancaire
- **PowerShell DSC + WinRM** — l'équivalent Microsoft natif

## 🔒 Sécurité

- ⚠️ **Ansible = root sur les cibles** : un playbook compromis = serveur compromis. **Ne jamais exposer le contrôleur Ansible sur Internet**
- Utiliser **Ansible Vault** (`ansible-vault`) pour tous les secrets ; ne **jamais** commiter de mot de passe en clair
- Activer **SSH key ed25519** plutôt que RSA
- Limiter les utilisateurs sudoers côté cible : créer un `ansible` user avec `NOPASSWD` ciblé
- **Audit** : logger tous les playbooks dans un repo Git auditable + `ANSIBLE_LOG_PATH=/var/log/ansible.log`
- **Molecule** : tester ses rôles dans Docker avant production
- **AWX/Semaphore** : ajouter RBAC + 2FA si l'équipe est > 2 personnes

## 📚 Ressources

- [Site officiel](https://www.ansible.com/)
- [Documentation officielle](https://docs.ansible.com/)
- [Dépôt GitHub](https://github.com/ansible/ansible)
- [Ansible Galaxy](https://galaxy.ansible.com/) — rôles partagés
- [Awesome Ansible](https://github.com/awesome-ansible/awesome-ansible)
- [Best Practices](https://docs.ansible.com/ansible/latest/tips_tricks/ansible_tips_tricks.html)

## 🔗 Pages Liées
- [[cat-automation]] — Catégorie Automation
- [[app-semaphore-ui]] — UI web pour Ansible
- [[app-rundeck]] — Orchestrateur de jobs (parfois comparé à Ansible)
- [[cat-deployment]] — Catégorie Déploiement
- [[recettes-docker-compose]] — Templates Docker
- [[securisation-home-lab]] — Sécurité
