Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| eadl:bloc4:fm2:intro [2026/04/25 01:56] – créée jcheron | eadl:bloc4:fm2:intro [2026/04/30 01:58] (Version actuelle) – jcheron | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Introduction à l’Infrastructure as Code (IaC) ====== | + | ====== Introduction à l'Infrastructure as Code (IaC) ====== |
| + | |||
| + | < | ||
| + | On apprend à déployer une infra de façon reproductible, | ||
| + | </ | ||
| ===== Objectifs ===== | ===== Objectifs ===== | ||
| - | - Comprendre les limites des approches traditionnelles | + | À la fin de cette séance, vous serez capable |
| - | - Identifier les problématiques résolues par l’IaC | + | |
| - | - Découvrir les principes fondamentaux | + | |
| - | - Distinguer les rôles | + | |
| - | ----- | + | * Comprendre les limites de la gestion manuelle d’infrastructure |
| + | * Expliquer le concept d’Infrastructure as Code | ||
| + | * Distinguer approche déclarative et impérative | ||
| + | * Comprendre le rôle de Terraform et Ansible dans un workflow réel | ||
| - | ===== 1. Problèmes sans Infrastructure as Code ===== | + | ===== 1. Mise en situation |
| - | ===== 1.1 Gestion manuelle des infrastructures ===== | + | Vous arrivez dans une entreprise. |
| - | Dans une approche classique | + | Un développeur vous dit : |
| - | - Création manuelle des machines (console cloud) | + | "Pour lancer l’environnement : |
| - | - Configuration | + | - démarre un conteneur |
| - | - Déploiements non standardisés | + | |
| + | - copie les fichiers | ||
| - | Problèmes : | + | Un autre développeur fait différemment. |
| - | - Erreurs humaines fréquentes | + | Résultat : |
| - | - Temps de déploiement long | + | |
| - | - Difficulté à reproduire un environnement | + | |
| - | ----- | + | * environnements différents |
| + | * bugs difficiles à reproduire | ||
| + | * perte de temps | ||
| - | ===== 1.2 Dérive de configuration (Configuration Drift) ===== | + | <WRAP round help> |
| + | Question : | ||
| - | Définition : | + | * Quel est le principal problème ici ? |
| + | </ | ||
| - | Un système évolue au fil du temps et ne correspond plus à sa configuration initiale. | + | ===== 2. Problème : gestion manuelle ===== |
| - | Exemple | + | En pratique, sans automatisation |
| - | - Un serveur en production a été modifié manuellement | + | * actions manuelles (console, SSH) |
| - | - L’environnement | + | * dépend |
| - | - Bugs impossibles à reproduire | + | * pas versionné |
| - | ----- | + | Exemples concrets : |
| - | ===== 1.3 Non reproductibilité ===== | + | * un port ouvert " |
| + | * configuration différente entre dev et prod | ||
| + | * perte d’informations lors d’un redéploiement | ||
| - | Sans automatisation | + | <WRAP round help> |
| + | Question | ||
| - | - Impossible de recréer rapidement un environnement | + | * Pourquoi ces problèmes sont difficiles |
| - | - Dépendance | + | </ |
| - | - Documentation souvent obsolète | + | |
| - | ----- | + | ===== 3. Micro-exercice : reproduction d’un environnement ===== |
| - | ===== 1.4 Passage à l’échelle difficile ===== | + | Objectif : |
| - | Exemple : | + | Comprendre la difficulté de reproduire un environnement sans automatisation |
| - | - Créer | + | ==== Étape |
| - | - Créer 50 serveurs → ingérable | + | |
| - | Problèmes | + | Fichier |
| - | - Temps | + | <sxh bash; |
| - | - cohérence | + | docker run -d -p 8081:80 --name test_nginx nginx |
| - | - erreurs cumulées | + | </ |
| - | ----- | + | <WRAP round todo> |
| + | Validation : | ||
| - | ===== 1.5 Manque de traçabilité ===== | + | * Ouvrir http:// |
| + | </ | ||
| - | Questions difficiles : | + | ==== Étape 2 ==== |
| - | - Qui a modifié quoi ? | + | Fichier : terminal |
| - | - Quand ? | + | |
| - | - Pourquoi ? | + | |
| - | ----- | + | <sxh bash; |
| + | echo "< | ||
| + | docker cp index.html test_nginx:/ | ||
| + | </ | ||
| - | ===== 1.6 Transition ===== | + | <WRAP round todo> |
| + | Validation : | ||
| - | L’infrastructure devient : | + | * Rafraîchir la page |
| + | </ | ||
| - | - trop complexe | + | ==== Étape 3 ==== |
| - | - trop dynamique | + | |
| - | - trop critique | + | |
| - | => Besoin d’automatisation et de standardisation | + | Fichier : terminal |
| - | ----- | + | <sxh bash; |
| + | docker rm -f test_nginx | ||
| + | docker run -d -p 8081: | ||
| + | </ | ||
| - | ===== 2. Concepts de l’Infrastructure as Code ===== | + | <WRAP round help> |
| + | Questions : | ||
| - | ===== 2.1 Définition ===== | + | * Que s’est-il passé ? |
| + | * Pourquoi la modification a disparu ? | ||
| + | </ | ||
| - | Infrastructure as Code : | + | ===== 4. Transition ===== |
| - | Décrire l’infrastructure sous forme de code afin de pouvoir | + | Sans automatisation |
| - | - versionner | + | * les modifications sont perdues |
| - | - automatiser | + | * rien n’est tracé |
| - | - reproduire | + | * difficile à reproduire |
| - | ----- | + | <WRAP round help> |
| + | Question : | ||
| - | ===== 2.2 Principes fondamentaux ===== | + | * Comment éviter ce problème dans une équipe ? |
| + | </ | ||
| - | ==== Déclaratif vs procédural | + | ===== 5. Définition de l’Infrastructure as Code ===== |
| - | - Déclaratif | + | Principe |
| - | - Procédural : décrire les étapes | + | |
| - | ----- | + | * décrire l’infrastructure avec du code |
| + | * versionner ce code (Git) | ||
| + | * exécuter automatiquement | ||
| - | ==== Idempotence ==== | + | Analogie : |
| - | Appliquer plusieurs fois une configuration | + | * avant : configuration |
| + | * après : recette écrite et reproductible | ||
| - | ----- | + | ===== 6. Exemple simple ===== |
| - | ==== Versioning ==== | + | Objectif : |
| - | - Code stocké dans Git | + | * obtenir un serveur web fonctionnel |
| - | - Historique des modifications | + | |
| - | - rollback possible | + | |
| - | ----- | + | Sans IaC : |
| - | ==== Automatisation ==== | + | * commandes manuelles |
| + | * étapes non tracées | ||
| - | - Déploiement rapide | + | Avec IaC : |
| - | - Réduction des erreurs humaines | + | |
| - | ----- | + | * fichier Terraform → crée le serveur |
| + | * playbook Ansible → configure le serveur | ||
| - | ==== Reproductibilité ==== | + | Résultat : |
| - | - Même code = même infrastructure | + | * reproductible |
| + | * automatisé | ||
| + | * partagé avec l’équipe | ||
| - | ----- | + | ===== 7. Déclaratif vs Impératif ===== |
| - | ===== 2.3 Cycle de vie ===== | + | ==== Approche impérative |
| - | - Écriture du code | + | On décrit les étapes : |
| - | - Planification (diff) | + | |
| - | - Application | + | |
| - | - Mise à jour | + | |
| - | - Destruction | + | |
| - | ----- | + | * installer nginx |
| + | * démarrer le service | ||
| - | ===== 3. Deux approches complémentaires ===== | + | Limite : |
| - | ===== 3.1 Vision globale ===== | + | * dépend de l’état initial |
| - | Deux grandes catégories d’outils : | + | ==== Approche déclarative ==== |
| - | - Provisioning d’infrastructure | + | On décrit le résultat : |
| - | - Configuration des systèmes | + | |
| - | ----- | + | * "je veux un serveur web" |
| - | ===== 3.2 Terraform ===== | + | L’outil gère les actions nécessaires |
| - | Rôle : | + | <WRAP round help> |
| + | Question | ||
| - | - Provisionner l’infrastructure | + | * Pourquoi cette approche est-elle adaptée au cloud ? |
| + | </ | ||
| - | Exemples : | + | ===== 8. Terraform vs Ansible ===== |
| - | + | ||
| - | - VM (EC2) | + | |
| - | - Réseau (VPC, subnets) | + | |
| - | - Load balancer | + | |
| - | - Base de données | + | |
| - | + | ||
| - | Caractéristiques : | + | |
| - | + | ||
| - | - Approche déclarative | + | |
| - | - Gestion d’un état (state) | + | |
| - | - Interaction via API cloud | + | |
| - | + | ||
| - | ----- | + | |
| - | + | ||
| - | ===== 3.3 Ansible | + | |
| - | + | ||
| - | Rôle : | + | |
| - | + | ||
| - | - Configurer les systèmes | + | |
| - | - Déployer des applications | + | |
| - | + | ||
| - | Exemples : | + | |
| - | + | ||
| - | - Installer NGINX | + | |
| - | - Configurer un service | + | |
| - | - Déployer une application | + | |
| - | + | ||
| - | Caractéristiques : | + | |
| - | + | ||
| - | - Approche orientée tâches | + | |
| - | - Exécution séquentielle | + | |
| - | - Idempotence | + | |
| - | + | ||
| - | ----- | + | |
| - | + | ||
| - | ===== 3.4 Comparaison | + | |
| Terraform : | Terraform : | ||
| - | - Déclaratif | + | * crée l’infrastructure |
| - | - Orienté | + | * maintient |
| - | - Gère un état global | + | |
| Ansible : | Ansible : | ||
| - | - Orienté | + | * configure les systèmes |
| - | - Configuration logicielle | + | * exécute des tâches |
| - | - Pas de state central | + | |
| + | Exemple : | ||
| - | ----- | + | * Terraform → crée un conteneur |
| + | * Ansible → modifie son contenu | ||
| - | ===== 3.5 Complémentarité | + | ===== 9. Workflow DevOps |
| - | Dans un workflow réel : | + | * Terraform → infrastructure |
| + | * Ansible → configuration | ||
| + | * pipeline → déploiement applicatif | ||
| - | - Terraform crée l’infrastructure | + | Chaîne : |
| - | - Ansible configure les serveurs | + | |
| - | ----- | + | Code → Infrastructure → Configuration → Application |
| - | ===== 4. Conclusion | + | ===== 10. Transition vers le TD ===== |
| - | L’Infrastructure as Code permet | + | Dans le TD suivant |
| - | - d’industrialiser les déploiements | + | * vous allez automatiser ce que vous venez de faire manuellement |
| - | - de fiabiliser les environnements | + | * créer un service avec Terraform |
| - | - de gagner en rapidité et en reproductibilité | + | * le modifier avec Ansible |
| - | Terraform et Ansible ne sont pas concurrents mais complémentaires. | + | Objectif : |
| - | ----- | + | * comprendre la complémentarité des outils |
| - | ===== 5. Question de réflexion | + | ===== 11. À retenir |
| - | Pourquoi est-il risqué de modifier une infrastructure | + | * IaC = infrastructure |
| + | * objectif : reproductibilité et fiabilité | ||
| + | * Terraform → provisioning | ||
| + | * Ansible → configuration | ||