Skip to content

betagouv/euphrosyne-tools-api

Repository files navigation

Euphrosyne Tools API

Un micro service dédié à la gestion de Machines Virtuelles sur Azure et des connections (RDP) via Apache Guacamole.

Développement

Ce projet utilise FastAPI.

uvicorn main:app --reload

Configuration des variables d'environnement

Nom de la variable Description Requis
DATA_BACKEND Requis. Backend de stockage des données projets HOT. Valeurs : azure_fileshare ou azure_blob.
DATA_BACKEND_COOL Optionnel. Backend de stockage des données projets COOL. Valeurs : azure_fileshare ou azure_blob. Si absent, le refroidissement est désactivé.
AZURE_SUBSCRIPTION_ID ID de la souscription. Azure
AZURE_CLIENT_ID ID de l'application Azure (voir section Générer les clés pour s'authentifier auprès d'Azure).
AZURE_CLIENT_SECRET Secret de l'application Azure (voir section Générer les clés pour s'authentifier auprès d'Azure).
AZURE_TENANT_ID Tenant de l'application Azure (voir section Générer les clés pour s'authentifier auprès d'Azure).
AZURE_RESOURCE_GROUP_NAME Nom du Resource group où sont regroupées les ressources sur le compte Azure.
AZURE_TEMPLATE_SPECS_NAME Nom du Template specs utilisé pour déployer les machines virtuelles. Voir le projet euphrosyne-tools-infra.
AZURE_RESOURCE_PREFIX Optionnel. Préfixe utilisé pour éviter les collisions de nom lors de la création de ressources sur Azure. Doit être le même que dans la configuration Terraform (projet euphrosyne-tools-infra).
AZURE_STORAGE_ACCOUNT Nom du Storage account Azure.
AZURE_STORAGE_FILESHARE Nom du Fileshare contenant les fichiers de données sur le Storage account Azure. Requis si DATA_BACKEND=azure_fileshare.
AZURE_STORAGE_FILESHARE_COOL Nom du Fileshare contenant les données projets COOL. Requis si DATA_BACKEND_COOL=azure_fileshare.
DATA_PROJECTS_LOCATION_PREFIX Optionnel. Préfixe du chemin de base des projets pour HOT.
AZURE_STORAGE_DATA_CONTAINER Nom du container Blob utilisé pour les données projets (requis si DATA_BACKEND=azure_blob).
AZURE_STORAGE_DATA_CONTAINER_COOL Nom du container Blob utilisé pour les données projets COOL (requis si DATA_BACKEND_COOL=azure_blob).
AZURE_IMAGE_GALLERY Nom de la Azure compute gallery qui stock les différentes images
AZURE_IMAGE_DEFINITION Nom de la VM image definition qui est l'image pré-configurée pour les VM Euphrosyne
CORS_ALLOWED_ORIGIN Origines des frontends autorisées à utiliser l'API. Séparer les origines par des espaces.
GUACAMOLE_ROOT_URL URL du service guacamole. Ajouter /guacamole à la fin si besoin.
GUACAMOLE_ADMIN_USERNAME Nom d'un utilisateur qui peut gérer les connections sur le service Guacamole.
GUACAMOLE_ADMIN_PASSWORD Mot de passe de l'utilisateur Guacamole.
GUACAMOLE_SECRET_KEY Clé secrète utilisée pour encrypter les mots de passe des utilisateurs créés à la volée.
JWT_SECRET_KEY Clé secrète utilisée pour lire les tokens JWT reçus depuis le backend euphrosyne. Doit être la même que l'application Django Euphrosyne.
VM_LOGIN Nom d'utilisateur utilisé pour se connecter aux machines virtuelles.
VM_PASSWORD Mot de passe utilisé pour se connecter aux machines virtuelles.

Stockage des données projets

Le backend HOT est défini par DATA_BACKEND. Le backend COOL est défini par DATA_BACKEND_COOL (si absent, le refroidissement est désactivé).

  • HOT Fileshare : DATA_BACKEND=azure_fileshare et AZURE_STORAGE_FILESHARE doit être renseigné.
  • HOT Blob : DATA_BACKEND=azure_blob et AZURE_STORAGE_DATA_CONTAINER doit être renseigné.
  • COOL Fileshare : DATA_BACKEND_COOL=azure_fileshare et AZURE_STORAGE_FILESHARE_COOL doit être renseigné.
  • COOL Blob : DATA_BACKEND_COOL=azure_blob et AZURE_STORAGE_DATA_CONTAINER_COOL doit être renseigné.

Le préfixe DATA_PROJECTS_LOCATION_PREFIX s'applique au chemin de base des projets pour les deux backends.

Documentation des données projets

Pour la documentation technique du stockage HOT/COOL, du routage par cycle de vie et des opérations COOL/RESTORE, voir DATA_LIFECYCLE.md.

Configurer le CORS (Blob / Fileshare)

Pour autoriser les frontends à accéder directement au stockage, utiliser les scripts suivants :

  • Blob :

    python scripts/set_blob_cors.py "<origins>" <container_name>

    Exemple :

    python scripts/set_blob_cors.py "https://app.example.com,https://admin.example.com" project-myproject
  • Fileshare :

    python scripts/set_file_share_cors.py "<origins>"

    Exemple :

    python scripts/set_file_share_cors.py "https://app.example.com,https://admin.example.com"

Générer les clés pour s'authentifier auprès d'Azure

https://docs.microsoft.com/en-us/azure/developer/python/sdk/authentication-local-development-service-principal?tabs=azure-portal

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages