Introduction à Ansible
Objectifs du chapitre
- Comprendre ce qu'est Ansible
- Découvrir les concepts fondamentaux
- Comparer Ansible aux autres outils
- Identifier les cas d'usage
1 - Qu'est-ce que Ansible ?
Définition
Ansible est un outil d'automatisation IT open-source qui permet de :
- Configurer des serveurs
- Déployer des applications
- Orchestrer des workflows
- Gérer l'infrastructure as code
Caractéristiques clés
Pourquoi "Agentless" ?
| Avec Agent | Sans Agent (Ansible) |
|---|---|
| Agent à installer sur chaque serveur | Connexion SSH standard |
| Maintenance des agents | Rien à maintenir |
| Consommation ressources | Aucun overhead |
| Ports supplémentaires | Port SSH uniquement |
2 - Architecture Ansible
Vue d'ensemble
Composants
| Composant | Description |
|---|---|
| Control Node | Machine où Ansible est installé |
| Managed Nodes | Serveurs gérés par Ansible |
| Inventory | Liste des hôtes à gérer |
| Playbook | Fichier YAML décrivant les tâches |
| Module | Unité de travail (ex: apt, copy, file) |
| Role | Collection organisée de playbooks |
3 - Concepts fondamentaux
Idempotence
L'idempotence garantit qu'une tâche produit le même résultat, qu'elle soit exécutée 1 ou 100 fois.
Exemple :
# Cette tâche installe nginx SI il n'est pas déjà installé
- name: Installer nginx
apt:
name: nginx
state: present
- 1ère exécution : nginx installé ✅
- 2ème exécution : "ok" (rien à faire)
Déclaratif vs Impératif
Avec Ansible, vous décrivez l'état final souhaité, pas les étapes pour y arriver.
4 - Workflow Ansible
Flux d'exécution
États des tâches
| État | Couleur | Signification |
|---|---|---|
| ok | 🟢 Vert | Tâche réussie, pas de changement |
| changed | 🟡 Jaune | Tâche réussie, changement effectué |
| failed | 🔴 Rouge | Tâche échouée |
| skipped | 🔵 Cyan | Tâche ignorée (condition non remplie) |
| unreachable | 🔴 Rouge | Hôte inaccessible |
5 - Cas d'usage
Configuration Management
- Installation de packages
- Configuration de services
- Gestion des utilisateurs
- Déploiement de fichiers
Application Deployment
Provisioning Cloud
Orchestration
6 - Comparaison avec d'autres outils
Ansible vs autres
| Critère | Ansible | Puppet | Chef | Terraform |
|---|---|---|---|---|
| Type | Push | Pull | Pull | Push |
| Agent | Non | Oui | Oui | Non |
| Langage | YAML | DSL | Ruby | HCL |
| Courbe | Facile | Moyenne | Difficile | Moyenne |
| Focus | Config | Config | Config | Infra |
Quand utiliser Ansible ?
| Cas d'usage | Ansible | Alternative |
|---|---|---|
| Config serveurs | ✅ Excellent | - |
| Déploiement app | ✅ Excellent | - |
| Provisioning cloud | ✅ Bon | Terraform (meilleur) |
| Orchestration K8s | ⚠️ Possible | Helm, ArgoCD |
| CI/CD | ⚠️ Possible | Jenkins, GitLab CI |
7 - Écosystème Ansible
Produits Red Hat
| Produit | Description | Licence |
|---|---|---|
| Ansible Core | Engine d'automatisation | Open Source |
| Ansible Galaxy | Hub de rôles communautaires | Gratuit |
| AWX | Interface web | Open Source |
| Automation Platform | Solution entreprise | Commercial |
Modules populaires
8 - Premier exemple
Structure d'un playbook
---
# site.yml - Mon premier playbook
- name: Configuration serveurs web
hosts: webservers
become: yes
tasks:
- name: Mettre à jour le cache apt
apt:
update_cache: yes
- name: Installer nginx
apt:
name: nginx
state: present
- name: Démarrer nginx
service:
name: nginx
state: started
enabled: yes
- name: Copier la page d'accueil
copy:
src: index.html
dest: /var/www/html/index.html
Exécution
# Exécuter le playbook
ansible-playbook -i inventory.ini site.yml
# Résultat
PLAY [Configuration serveurs web] ****
TASK [Mettre à jour le cache apt] ****
ok: [web-01]
ok: [web-02]
TASK [Installer nginx] ****
changed: [web-01]
changed: [web-02]
TASK [Démarrer nginx] ****
changed: [web-01]
changed: [web-02]
PLAY RECAP ****
web-01 : ok=4 changed=2 failed=0
web-02 : ok=4 changed=2 failed=0
Résumé
Points clés
- Ansible est agentless : utilise SSH
- Les playbooks sont en YAML : lisibles par tous
- L'idempotence garantit des exécutions sûres
- Push-based : vous contrôlez quand exécuter
Exercices pratiques
- Expliquez la différence entre agentless et agent-based
- Qu'est-ce que l'idempotence et pourquoi est-ce important ?
- Listez 3 cas d'usage d'Ansible dans votre contexte
- Comparez Ansible et Terraform : quand utiliser chacun ?