Aller au contenu principal

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 AgentSans Agent (Ansible)
Agent à installer sur chaque serveurConnexion SSH standard
Maintenance des agentsRien à maintenir
Consommation ressourcesAucun overhead
Ports supplémentairesPort SSH uniquement

2 - Architecture Ansible

Vue d'ensemble

Composants

ComposantDescription
Control NodeMachine où Ansible est installé
Managed NodesServeurs gérés par Ansible
InventoryListe des hôtes à gérer
PlaybookFichier YAML décrivant les tâches
ModuleUnité de travail (ex: apt, copy, file)
RoleCollection 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

ÉtatCouleurSignification
ok🟢 VertTâche réussie, pas de changement
changed🟡 JauneTâche réussie, changement effectué
failed🔴 RougeTâche échouée
skipped🔵 CyanTâche ignorée (condition non remplie)
unreachable🔴 RougeHô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èreAnsiblePuppetChefTerraform
TypePushPullPullPush
AgentNonOuiOuiNon
LangageYAMLDSLRubyHCL
CourbeFacileMoyenneDifficileMoyenne
FocusConfigConfigConfigInfra

Quand utiliser Ansible ?

Cas d'usageAnsibleAlternative
Config serveurs✅ Excellent-
Déploiement app✅ Excellent-
Provisioning cloud✅ BonTerraform (meilleur)
Orchestration K8s⚠️ PossibleHelm, ArgoCD
CI/CD⚠️ PossibleJenkins, GitLab CI

7 - Écosystème Ansible

Produits Red Hat

ProduitDescriptionLicence
Ansible CoreEngine d'automatisationOpen Source
Ansible GalaxyHub de rôles communautairesGratuit
AWXInterface webOpen Source
Automation PlatformSolution entrepriseCommercial

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

  1. Expliquez la différence entre agentless et agent-based
  2. Qu'est-ce que l'idempotence et pourquoi est-ce important ?
  3. Listez 3 cas d'usage d'Ansible dans votre contexte
  4. Comparez Ansible et Terraform : quand utiliser chacun ?

← Table des matières | Installation →