Files
2026-06-09 18:40:21 +02:00

7.0 KiB


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
GitHub 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

📝 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. 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é)

sudo apt install -y pipx
pipx ensurepath
pipx install --include-deps ansible
ansible --version

Option 2 : Docker (nœud éphémère)

# 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 :

docker compose run --rm ansible ansible-playbook -i inventories/prod.yml playbooks/site.yml

Option 3 : Installation native (Ubuntu/Debian)

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 :

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

🔗 Alternatives

Open Source

  • app-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

🔗 Pages Liées