Skip to content

LeKyzzo/cloudcomputingProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cloudcomputingProject

Projet de démonstration cloud combinant :

  • un backend Flask pour gérer une petite API de voitures ;
  • une infrastructure Azure provisionnée avec Terraform ;
  • un script shell simple pour installer/lancer un backend sur une machine Linux.

Structure du projet

Fonctionnalités

API Flask

L’API définie dans backend/app.py expose les routes suivantes :

  • GET / : retourne un message de statut.
  • GET /cars : retourne la liste des voitures en mémoire.
  • POST /cars : ajoute une voiture.
  • DELETE /cars/<id> : supprime une voiture par identifiant.

Exemple de payload pour POST /cars :

{
  "brand": "Renault",
  "model": "Clio"
}

Les données sont stockées en mémoire. Elles sont perdues au redémarrage de l’application.

Infrastructure Terraform

La configuration Terraform crée :

  • un Resource Group Azure ;
  • un Virtual Network et un Subnet ;
  • une IP publique ;
  • une interface réseau ;
  • une machine virtuelle Linux Ubuntu ;
  • un compte de stockage ;
  • un conteneur Blob Storage privé.

Les sorties disponibles sont définies dans terraform/outputs.tf :

  • IP publique de la VM ;
  • nom du compte de stockage.

Prérequis

Pour le backend

  • Python 3
  • pip

Pour l’infrastructure

  • Terraform
  • Un compte Azure
  • Azure CLI authentifié, ou variables d’environnement Azure configurées

Installation du backend en local

Depuis la racine du projet :

  1. Créer un environnement virtuel :
    • Windows : python -m venv .venv
    • Linux/macOS : python3 -m venv .venv
  2. Activer l’environnement virtuel :
    • Windows : .venv\\Scripts\\activate
    • Linux/macOS : source .venv/bin/activate
  3. Installer les dépendances :
    • pip install -r requirements.txt
  4. Lancer l’application :
    • python backend/app.py

L’API sera accessible sur http://localhost:5000.

Tests rapides de l’API

Vérifier l’état

GET http://localhost:5000/

Ajouter une voiture

curl -X POST http://localhost:5000/cars \
  -H "Content-Type: application/json" \
  -d '{"brand":"Peugeot","model":"208"}'

Lister les voitures

curl http://localhost:5000/cars

Supprimer une voiture

curl -X DELETE http://localhost:5000/cars/1

Déploiement Terraform

Se placer dans le dossier terraform puis exécuter :

  1. terraform init
  2. terraform plan
  3. terraform apply

Pour afficher les sorties :

  • terraform output

Pour détruire l’infrastructure :

  • terraform destroy

Variables Terraform

Valeurs par défaut actuelles dans terraform/variables.tf :

  • location : francecentral
  • resource_group_name : efrei2
  • vm_name : efreimachine2
  • storage_account_name : mateoefreistorage2

Ces valeurs peuvent être surchargées via un fichier terraform.tfvars ou via la ligne de commande.

Script d’installation

Le script scripts/install_backend.sh :

  • met à jour les paquets ;
  • installe python3-pip ;
  • installe Flask ;
  • génère une application Flask minimale ;
  • lance cette application sur le port 5000.

Remarque : ce script déploie une application Flask simplifiée, différente de l’API complète présente dans backend/app.py.

Points d’attention

  • Le mot de passe administrateur de la VM est actuellement écrit en dur dans terraform/main.tf. Il faut le remplacer par une variable sensible.
  • Le fichier d’état Terraform terraform/terraform.tfstate est présent dans le dépôt. En pratique, il vaut mieux utiliser un backend distant sécurisé.
  • Le package azure-storage-blob est listé dans requirements.txt, mais n’est pas encore utilisé dans backend/app.py.

Améliorations possibles

  • connecter l’API au stockage Azure Blob ;
  • ajouter une base de données persistante ;
  • sécuriser la VM avec clés SSH et NSG ;
  • conteneuriser le backend avec Docker ;
  • ajouter des tests automatisés et un pipeline CI/CD.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors