Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| eadl:bloc4:fm2:intro [2026/04/25 03:08] – jcheron | eadl:bloc4:fm2:intro [2026/04/30 01:58] (Version actuelle) – jcheron | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Introduction à l' | ====== Introduction à l' | ||
| + | |||
| + | < | ||
| + | On apprend à déployer une infra de façon reproductible, | ||
| + | </ | ||
| ===== Objectifs ===== | ===== Objectifs ===== | ||
| Ligne 8: | Ligne 12: | ||
| * Expliquer le concept d’Infrastructure as Code | * Expliquer le concept d’Infrastructure as Code | ||
| * Distinguer approche déclarative et impérative | * Distinguer approche déclarative et impérative | ||
| - | * Identifier les différences entre Terraform et Ansible | + | * Comprendre le rôle de Terraform et Ansible |
| - | ===== 1. Problématique : gestion traditionnelle | + | ===== 1. Mise en situation |
| - | Dans un environnement classique (on-premise ou cloud), l’infrastructure est souvent : | + | Vous arrivez dans une entreprise. |
| - | * configurée manuellement | + | Un développeur vous dit : |
| + | |||
| + | "Pour lancer l’environnement : | ||
| + | | ||
| + | - ouvre le port 8080 | ||
| + | - copie les fichiers à la main" | ||
| + | |||
| + | Un autre développeur fait différemment. | ||
| + | |||
| + | Résultat : | ||
| + | |||
| + | | ||
| + | * bugs difficiles à reproduire | ||
| + | * perte de temps | ||
| + | |||
| + | <WRAP round help> | ||
| + | Question : | ||
| + | |||
| + | * Quel est le principal problème ici ? | ||
| + | </ | ||
| + | |||
| + | ===== 2. Problème : gestion manuelle ===== | ||
| + | |||
| + | En pratique, sans automatisation : | ||
| + | |||
| + | * actions manuelles | ||
| + | * dépend de la personne | ||
| + | * pas versionné | ||
| + | |||
| + | Exemples concrets : | ||
| + | |||
| + | * un port ouvert " | ||
| + | * configuration différente entre dev et prod | ||
| + | * perte d’informations lors d’un redéploiement | ||
| + | |||
| + | <WRAP round help> | ||
| + | Question : | ||
| + | |||
| + | * Pourquoi ces problèmes sont difficiles à corriger ? | ||
| + | </ | ||
| + | |||
| + | ===== 3. Micro-exercice : reproduction d’un environnement ===== | ||
| + | |||
| + | Objectif : | ||
| + | |||
| + | Comprendre la difficulté de reproduire un environnement sans automatisation | ||
| + | |||
| + | ==== Étape 1 ==== | ||
| + | |||
| + | Fichier : terminal | ||
| + | |||
| + | <sxh bash; | ||
| + | docker run -d -p 8081:80 --name test_nginx nginx | ||
| + | </ | ||
| + | |||
| + | <WRAP round todo> | ||
| + | Validation : | ||
| + | |||
| + | * Ouvrir http:// | ||
| + | </ | ||
| + | |||
| + | ==== Étape 2 ==== | ||
| + | |||
| + | Fichier : terminal | ||
| + | |||
| + | <sxh bash; | ||
| + | echo "< | ||
| + | docker cp index.html test_nginx:/ | ||
| + | </ | ||
| + | |||
| + | <WRAP round todo> | ||
| + | Validation : | ||
| + | |||
| + | * Rafraîchir la page | ||
| + | </ | ||
| + | |||
| + | ==== Étape 3 ==== | ||
| + | |||
| + | Fichier : terminal | ||
| + | |||
| + | <sxh bash; | ||
| + | docker rm -f test_nginx | ||
| + | docker run -d -p 8081:80 --name test_nginx nginx | ||
| + | </ | ||
| + | |||
| + | <WRAP round help> | ||
| + | Questions : | ||
| + | |||
| + | * Que s’est-il passé ? | ||
| + | * Pourquoi la modification a disparu ? | ||
| + | </ | ||
| + | |||
| + | ===== 4. Transition ===== | ||
| + | |||
| + | Sans automatisation : | ||
| + | |||
| + | * les modifications sont perdues | ||
| + | * rien n’est tracé | ||
| * difficile à reproduire | * difficile à reproduire | ||
| - | * source d’erreurs humaines | ||
| - | * peu documentée | ||
| - | Exemples de problèmes | + | <WRAP round help> |
| + | Question | ||
| - | * "Ça marche sur ma machine" | + | * Comment éviter ce problème dans une équipe ? |
| - | * configurations différentes entre dev / prod | + | </WRAP> |
| - | * perte de temps lors des déploiements | + | |
| - | * difficulté de rollback | + | |
| - | ===== 2. Définition de l’Infrastructure as Code ===== | + | ===== 5. Définition de l’Infrastructure as Code ===== |
| - | L’Infrastructure as Code (IaC) consiste à : | + | Principe |
| - | * décrire l’infrastructure | + | * décrire l’infrastructure |
| * versionner ce code (Git) | * versionner ce code (Git) | ||
| - | * automatiser les déploiements | + | * exécuter automatiquement |
| - | Exemple | + | Analogie |
| - | Au lieu de créer une VM à la main : | + | * avant : configuration "à la main" |
| - | | + | |
| - | Avantages : | + | ===== 6. Exemple simple ===== |
| - | * reproductibilité | + | Objectif : |
| - | * traçabilité | + | |
| - | * automatisation | + | |
| - | * réduction des erreurs | + | |
| - | ===== 3. Déclaratif vs Impératif ===== | + | * obtenir un serveur web fonctionnel |
| + | |||
| + | Sans IaC : | ||
| + | |||
| + | * commandes manuelles | ||
| + | * étapes non tracées | ||
| + | |||
| + | Avec IaC : | ||
| + | |||
| + | * fichier Terraform → crée le serveur | ||
| + | * playbook Ansible → configure le serveur | ||
| + | |||
| + | Résultat : | ||
| + | |||
| + | * reproductible | ||
| + | * automatisé | ||
| + | * partagé avec l’équipe | ||
| + | |||
| + | ===== 7. Déclaratif vs Impératif ===== | ||
| ==== Approche impérative ==== | ==== Approche impérative ==== | ||
| Ligne 52: | Ligne 165: | ||
| On décrit les étapes : | On décrit les étapes : | ||
| - | * créer un serveur | ||
| * installer nginx | * installer nginx | ||
| * démarrer le service | * démarrer le service | ||
| - | Exemple | + | Limite |
| - | * scripts bash | + | |
| - | * Ansible (en partie) | + | * dépend de l’état initial |
| ==== Approche déclarative ==== | ==== Approche déclarative ==== | ||
| - | On décrit | + | On décrit |
| - | * "je veux un serveur | + | * "je veux un serveur |
| - | L’outil | + | L’outil |
| - | Exemple : | + | <WRAP round help> |
| - | * Terraform | + | Question : |
| - | ===== 4. Terraform vs Ansible ===== | + | * Pourquoi cette approche est-elle adaptée au cloud ? |
| + | </ | ||
| - | ^ Outil ^ Type ^ Usage principal ^ | + | ===== 8. Terraform |
| - | | Terraform | + | |
| - | | Ansible | + | |
| Terraform : | Terraform : | ||
| - | * crée les ressources (EC2, réseau, etc.) | + | * crée l’infrastructure |
| - | * gère l’état (state) | + | * maintient un état (state) |
| Ansible : | Ansible : | ||
| - | * configure les serveurs | + | * configure les systèmes |
| - | * installe | + | * exécute |
| - | * déploie des applications | + | |
| + | Exemple : | ||
| + | |||
| + | * Terraform → crée un conteneur | ||
| + | * Ansible → modifie son contenu | ||
| + | |||
| + | ===== 9. Workflow DevOps ===== | ||
| + | |||
| + | * Terraform → infrastructure | ||
| + | * Ansible → configuration | ||
| + | * pipeline → déploiement applicatif | ||
| + | |||
| + | Chaîne : | ||
| - | ===== 5. Workflow DevOps typique ===== | + | Code → Infrastructure → Configuration → Application |
| - | * Terraform → crée l’infrastructure | + | ===== 10. Transition vers le TD ===== |
| - | * Ansible → configure les serveurs | + | |
| - | * Application → déployée ensuite | + | |
| - | Schéma logique | + | Dans le TD suivant |
| - | | + | |
| + | * créer un service avec Terraform | ||
| + | * le modifier avec Ansible | ||
| - | ===== 6. Bonnes pratiques ===== | + | Objectif : |
| - | * Tout versionner (Git) | + | * comprendre |
| - | * Ne jamais modifier à la main en production | + | |
| - | * Utiliser | + | |
| - | * Tester en environnement de dev | + | |
| - | ===== À retenir ===== | + | ===== 11. À retenir ===== |
| * IaC = infrastructure gérée comme du code | * IaC = infrastructure gérée comme du code | ||
| + | * objectif : reproductibilité et fiabilité | ||
| * Terraform → provisioning | * Terraform → provisioning | ||
| * Ansible → configuration | * Ansible → configuration | ||
| - | * Objectif : automatiser, | ||