Un micro service dédié à la gestion de Machines Virtuelles sur Azure et des connections (RDP) via Apache Guacamole.
Ce projet utilise FastAPI.
uvicorn main:app --reload
| 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. |
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_fileshareetAZURE_STORAGE_FILESHAREdoit être renseigné. - HOT Blob :
DATA_BACKEND=azure_blobetAZURE_STORAGE_DATA_CONTAINERdoit être renseigné. - COOL Fileshare :
DATA_BACKEND_COOL=azure_fileshareetAZURE_STORAGE_FILESHARE_COOLdoit être renseigné. - COOL Blob :
DATA_BACKEND_COOL=azure_blobetAZURE_STORAGE_DATA_CONTAINER_COOLdoit être renseigné.
Le préfixe DATA_PROJECTS_LOCATION_PREFIX s'applique au chemin de base des projets pour les deux backends.
Pour la documentation technique du stockage HOT/COOL, du routage par cycle de vie et des opérations COOL/RESTORE, voir DATA_LIFECYCLE.md.
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"