PR : Configuration Management Tools and Infrastructure as Code#46
Open
Zestblvck wants to merge 2 commits into
Open
PR : Configuration Management Tools and Infrastructure as Code#46Zestblvck wants to merge 2 commits into
Zestblvck wants to merge 2 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rapport de Pull Request : Configuration Management Tools and Infrastructure as Code
Auteurs : MEZIANE Zakariae, ALIOUA Nordine et NOUMDEM Karl
🔗 Liens du Projet
Sommaire
1. Introduction
Ce projet consiste en la modernisation de l'application DoodleStudent par la mise en œuvre de solutions professionnelles de Configuration Management et d'Infrastructure as Code (IaC). Nous avons transformé une application manuelle en une plateforme automatisée, sécurisée et résiliente.
2. Objectifs DevOps
Nos interventions visaient à remplir quatre objectifs fondamentaux :
3. Justification des choix technologiques
Pourquoi ces outils plutôt que d'autres ? Voici notre réflexion technique :
4. Démarrage rapide
Option A : Déploiement automatisé (Ansible)
Ansible pilote l'infrastructure et effectue les étapes suivantes :
.envvia Jinja2.# Se placer dans le dossier infra/ansible ansible-playbook -i inventory.ini playbook.ymlOption B : Déploiement direct (Docker Compose)
5. Accès aux Interfaces
6. Cœur du Sujet : Configuration Management (Jinja2 & Nginx)
Nous avons implémenté une gestion de configuration dynamique pour éliminer toute dépendance fixe.
A. Découplage du Frontend (Nginx Template)
Nous utilisons un template Nginx (
front/nginx.conf.template) qui injecte l'URL du backend au démarrage du conteneur viaenvsubst.Exemple de Template Nginx :
B. Synthèse de la Gestion de Configuration
7. Infrastructure as Code : Déploiement avec Ansible
Ansible garantit que l'infrastructure est déployée de manière identique sur n'importe quelle machine.
A. Détail des fichiers IaC
inventory.ini: Définit les machines cibles. Permet de séparer la configuration réseau du code.group_vars/all.yml: Centralise toutes les variables. C'est notre source unique de vérité.templates/.env.j2: Template dynamique fusionnant les variables dans le.envde l'application.playbook.yml: Le script maître qui orchestre le déploiement complet.B. Extraits de code techniques
La Source de Vérité (
group_vars/all.yml) :Le Playbook (
playbook.yml) :8. Extensions DevOps
CI/CD & Smoke Test
Notre pipeline GitHub Actions automatise les tests. Nous avons ajouté un Smoke Test qui valide la disponibilité réelle de l'API :
Chaos Engineering (Pumba)
Nous avons testé la résilience du système face à des pannes. Le service Pumba est commenté par défaut dans le
docker-compose.yamlpour préserver la stabilité, mais peut être activé pour valider l'auto-guérison.Extrait du service Chaos :
Monitoring (Uptime Kuma)
Uptime Kuma (port 3001) offre une visualisation immédiate de la santé des services, cruciale pour observer les effets du Chaos Engineering.
9. Conclusion
Ce projet démontre qu'une infrastructure bien gérée par le code (IaC) et surveillée est la clé d'une application moderne. Nous avons réussi à transformer un projet complexe en une solution simple, automatisée et robuste, prête pour une exploitation réelle.