Automatisation des Infrastructures et Déploiement CI/CD
Ce cours réunit 29 TP du Master DevOps & Cloud. Les TP1 et TP2 déploient le même portfolio Next.js de deux façons, en local, dans des machines virtuelles : aucun nom de domaine n’est nécessaire. Le TP3 construit ensuite un pipeline CI/CD complet dans le cloud avec GitHub Actions et Render. Les TP4 à TP29 forment une série d’initiation, outil par outil, qui mène jusqu’à Kubernetes, GitOps, l’observabilité et le Platform Engineering.
Les TP sont regroupés en 9 parties thématiques. La numérotation suit l’ordre conseillé : chaque partie s’appuie sur les précédentes.
| Partie | Thème | TP |
|---|---|---|
| 1 | Déployer une application | TP1–TP3 |
| 2 | Automatisation et Infrastructure as Code | TP4–TP6 |
| 3 | Conteneurs et API | TP7–TP8 |
| 4 | CI/CD et DevSecOps | TP9–TP12 |
| 5 | Cloud et Kubernetes | TP13–TP15 |
| 6 | Sécurité de la plateforme | TP16–TP18 |
| 7 | GitOps | TP19–TP20 |
| 8 | Exploitation et fiabilité | TP21–TP25 |
| 9 | Platform Engineering et pilotage | TP26–TP29 |
Ordre conseillé
Partie 1 : Déployer une application
- TP1 : comprendre l’automatisation « à la main » (rôles, idempotence, Semaphore).
- TP2 : découvrir l’approche PaaS, puis comparer les deux (partie D du TP2).
- TP3 : automatiser la vérification et le déploiement avec un vrai pipeline CI/CD (GitHub Actions + Render).
Partie 2 : Automatisation et Infrastructure as Code
- TP4 : maîtriser les bases d’Ansible (inventaire, playbooks, clés SSH, rôles).
- TP5 : créer des VM reproductibles avec Vagrant et les provisionner avec Ansible.
- TP6 : décrire l’infrastructure avec Terraform, puis enchaîner Vagrant → Ansible → Terraform.
Partie 3 : Conteneurs et API
- TP7 : produire des images Docker petites et sûres, et décrire une pile complète avec Compose.
- TP8 : rendre une API robuste et prouver sa robustesse par des tests.
Partie 4 : CI/CD et DevSecOps
- TP9 : décrire le pipeline Jenkins dans le dépôt (Jenkinsfile, Multibranch).
- TP10 : brancher les contrôles de sécurité au plus tôt (poste, CI, Pull Request).
- TP11 : comparer avec GitLab CI/CD et exploiter son propre runner.
- TP12 : sécuriser la chaîne d’approvisionnement (registre, SBOM, signature, provenance).
Partie 5 : Cloud et Kubernetes
- TP13 : piloter un cloud AWS local (Floci) et industrialiser Terraform.
- TP14 : monter un cluster Kubernetes et maîtriser ses objets de base.
- TP15 : packager l’application pour plusieurs environnements (Helm sert ensuite d’installeur).
Partie 6 : Sécurité de la plateforme
- TP16 : chiffrer les échanges (HTTPS) et gérer les identités (OIDC).
- TP17 : sécuriser le cluster en profondeur.
- TP18 : sortir les secrets des manifests.
Partie 7 : GitOps
- TP19 : déployer en GitOps avec Argo CD et promouvoir entre environnements.
- TP20 : comparer avec Flux CD.
Partie 8 : Exploitation et fiabilité
- TP21 : observer, mesurer et alerter.
- TP22 : tester l’application en fonctionnement (sécurité et charge).
- TP23 : livrer progressivement et annuler automatiquement.
- TP24 : protéger les données et savoir restaurer.
- TP25 : sécuriser et piloter le trafic entre services.
Partie 9 : Platform Engineering et pilotage
- TP26 : construire des API de plateforme.
- TP27 : offrir un portail et des Golden Paths aux développeurs.
- TP28 : piloter les coûts et la performance de livraison.
- TP29 : intégrer l’IA sans affaiblir la chaîne de sécurité.
Dépendances entre parties : Floci (TP13) sert aux TP18, TP24 et TP26 ; le chart du TP15 est repris par le TP20 ; la pile d’observabilité du TP21 sert aux TP23, TP25 et TP28.
Ressources : les TP14 à TP29 demandent une VM de lab d’au moins 4 vCPU et 8 Go de RAM (16 Go conseillés pour les TP21, TP23 et TP28, qui s’appuient sur la pile d’observabilité). Le TP12 utilise une VM dédiée à Harbor.
Utilisez un serveur vierge distinct pour chaque TP : le TP1 installe Nginx sur les ports 80/443, que Coolify veut gérer lui-même.
Fichiers de départ : chaque TP qui en a donne ses fichiers de départ en tête de page, sous forme d’archive
.zip. Ce sont des squelettes avec des TODO, pas des corrections.