Date de collecte : 10 juin 2026
Complété par : Vincent Ringuedé
Fonction : DevOps Engineer
Email : vincent.ringuede@wescale.fr
Ce formulaire est pré-rempli avec les informations déjà connues de l'infrastructure.
Il ne reste que les données manquantes à compléter (marquées par _______________)
Priorités :
ℹ️ Hébergé sur le cluster shared (mutualisé avec platform)
ℹ️ Hébergé sur le cluster shared (mutualisé avec ptls)
ℹ️ Rôle du Controller : Composant central qui gère la file d'attente des jobs, alloue les ressources aux calculs, et supervise les worker nodes. Si le controller tombe, les calculs en cours sont perdus et aucun nouveau job ne peut être lancé.
⚠️ SPOF identifié : 1 seul controller par environnement. Si ce serveur tombe, tout le cluster HPC de l'environnement est inutilisable.
⚠️ SPOF Critique : 1 seul serveur NFS par environnement, pas de HA identifiée
ℹ️ Rôle des Workers : Serveurs qui exécutent les calculs bioinformatiques. Créés et détruits à la demande selon les besoins des clients. Managés par le controller Slurm.
terraform/projects/{env}/hpc-nodes/ℹ️ Hébergé sur shared - Voir section shared ci-dessous
ℹ️ Hébergé sur shared - Voir section shared ci-dessous
ℹ️ Usage : Base de données pour Slurm (jobs HPC, comptabilité, historique)
Remplace : Graph Databases (GRAPH-DB-PROJECT)
Type : RDF Triple Store (Apache Jena + Fuseki)
Déploiement : Sur Tomcat
Criticité : Tier 2 (données de graphe de connaissances)
🟠 Statut déploiement : ⚠️ Rôle Ansible existe mais AUCUN playbook ne l'utilise
🟠 Rôle Ansible : microbiome_studio/msio/roles/jena/
🟠 Auteur rôle : Azer BEN AMMAR (MSIO OPS TEAM)
🟠 Dépendances : Java + Tomcat (via rôles Ansible)
🟠 Authentification : Apache Shiro + LDAP configuré
🟠 Répertoire installation : /etc/<fuseki_instances_name>
🟠 Endpoints : /$/status, /$/ping (publics), /$/** (admin protégé)
🟠 Environnements cibles : ⚠️ À DÉFINIR - Aucun playbook existant
🟠 Version Jena prévue : ⚠️ Non spécifiée dans le code
🟠 Version Fuseki prévue : ⚠️ Non spécifiée dans le code
⚠️ Point critique : Rôle préparé mais jamais utilisé - à clarifier avec l'équipe avant intégration DRP
Toutes les bases RDB (PostgreSQL + MySQL) ont :
Points d'attention identifiés :
Bases concernées par backup automatique :
Tests de restauration RDB :
⚠️ PROBLÈME CRITIQUE : Aucun test de restauration RDB n'a été identifié ou documenté. Sans tests réguliers :
Actions nécessaires :
ℹ️ Usage : Stockage partagé entre tous les environnements (data + apps)
⚠️ SPOF CRITIQUE : 1 seul serveur NFS commun utilisé par TOUS les environnements. Si il tombe, impact sur tous les tenants.
ℹ️ 1 NFS par environnement pour le stockage HPC local (jobs, calculs temporaires)
Récapitulatif volumes NFS HPC :
Total NFS HPC : ~5.1 TB (tous environnements)
Total NFS commun : 2.1 TB
Total global NFS : ~7.2 TB
NFS sauvegardés par Bacula :
internal-tools (hpc-lab)
msio-dev
msio-recette
msio-shared (platform + ptls)
msio-common ⚠️ CRITIQUE (NFS partagé)
msio-demo
bel-prod (PRODUCTION)
lesaffre-prod (PRODUCTION)
Configuration Bacula :
1. scw-encryption-datascience
2. scw-encryption-web-multienv-data
3. scw-encryption-msio-dev-uploads
4. scw-encryption-msio-recette-uploads
5. scw-encryption-msio-demo-uploads
6. scw-encryption-bel-prod-uploads
7. scw-encryption-lesaffre-prod-uploads
Informations serveur :
Services exposés (Security Group: ldap-ldaps-https-kerberos-ntp-dns-prometheus) :
Backup & Redondance :
20231226_ipa_microbiomestudio_fr_snap_0⚠️ SPOF CRITIQUE Tier 0 :
https://acme-v02.api.letsencrypt.org/directory) pour recette/demo/bel/lesaffre/ptls<app>-<domain>-tls)helm.sh/resource-policy: keep (protection contre suppression)nginx_ingress_controller_ssl_expire_time_secondsAutres certificats identifiés :
openssl_privatekey et openssl_certificate/opt/bacula/etc/ sur chaque client/serveurroles/bacula-client/files/)msio-common (NFS commun)
🟠 Security Group : nfs-sg
🟠 Port NFS : 2049
🟠 Accès autorisés :
🟠 Politique : Drop par défaut (inbound), Accept (outbound)
🟠 ICMP : Autorisé
🟠 Autres Security Groups : _______________________
🟠 Documentation des règles : ☐ Oui ☐ Non
| Environnement | ModSecurity | IP Whitelist |
|---|---|---|
| dev | ✅ Oui | ✅ Oui (VPN + dev-pgw) |
| recette | ✅ Oui | ✅ Oui (VPN + recette-pgw + IPs Legal) |
| demo | ✅ Oui | ✅ Oui (VPN + demo-pgw + Abolis) |
| bel | ✅ Oui (désactivé sur S3) | ✅ Oui (VPN + bel IPs) |
| lesaffre | ✅ Oui (désactivé sur S3) | ✅ Oui (VPN + lesaffre IPs ~30 IPs) |
| ptls | ❌ Non (désactivé) | ✅ Oui (VPN + shared + ptls IPs) |
| platform | ❌ Non (désactivé) | ✅ Oui (VPN + shared + Abolis) |
| shared | ✅ Oui | ✅ Oui |
nginx.ingress.kubernetes.io/whitelist-source-rangeTypes de secrets managés :
Passwords BDD (backend, keycloak, events, hpc)
Clés S3 (access key, secret key, encryption key)
API keys (sync, auth client secret)
Credentials OpenSearch
Credentials NATS
🟠 Rotation automatique des secrets : ☐ Oui ☐ Non
🟠 MFA activé pour accès Scaleway console : ☐ Oui ☐ Non
🟠 Break-glass procedures documentées : ☐ Oui ☐ Non
🟠 Accès secrets en cas de DR : ☐ Documenté ☐ Non
nginx_ingress_controller_ssl_expire_time_secondsOpenSearch Cluster :
Fluentd (collecteur) :
Configuration non trouvée dans le code :
terraform/projects/{env}/hpc-nodes/){project}/terraform.tfstate (infrastructure principale){project}/hpc-nodes/terraform.tfstate (HPC workers)Exemples de state files :
bel-prod/terraform.tfstate
bel-prod/hpc-nodes/terraform.tfstate
lesaffre-prod/terraform.tfstate
msio-dev/terraform.tfstate
etc.
🔴 State locking : ☐ Oui ☑ Non ⚠️ NON CONFIGURÉ
🔴 Versioning du bucket state : ☐ Oui ☑ Non ⚠️ CRITIQUE - Versioning désactivé sur msio-terraform-state
🔴 Backup du state : ☑ Oui ☐ Non
🔴 Réplication du bucket state : ☐ Oui ☑ Non ⚠️ Pas de réplication cross-region
terraform/projects/ et terraform/modules/microbiome_studio/msio/msio-terraform-state critique → Doit avoir versioning + backup + réplication### 🔴 SPOF CRITIQUES IDENTIFIÉS
#### Infrastructure
1. **IPA (ipa.microbiomestudio.fr)** - CRITIQUE
- Serveur DNS + Identity Management
- Non redondé, non terraformé (legacy)
- Projet Scaleway "default"
- Si perte → perte DNS de toute l'infrastructure
- Action : Backup + documentation de restauration urgente
2. **NFS Commun (msio-common)** - CRITIQUE
- 1 seul serveur NFS partagé par TOUS les environnements
- 2.1 TB de données (data + apps)
- Accès via IPs publiques PGW
- Si perte → impact sur tous les tenants
- Action : Stratégie HA ou backup fréquent
3. **NFS par environnement (HPC)** - CRITIQUE PROD
- 1 serveur NFS par environnement, pas de HA
- Lesaffre : 2.1 TB (le plus gros)
- Si perte → perte données de calcul HPC
- Action : Backup Bacula à valider + tests de restauration
4. **Controllers Slurm** - CRITIQUE HPC
- 1 seul controller par environnement
- Si perte → tout le cluster HPC inutilisable
- Action : Documenter procédure de reconstruction
5. **Terraform State (S3)** - CRITIQUE
- Bucket `msio-terraform-state` en fr-par uniquement
- Pas de réplication cross-region identifiée
- Si perte → impossible de gérer l'infrastructure
- Action : Vérifier versioning + backup + réplication
#### Réseau & Sécurité
6. **Rundeck (rundeck.prod.microbiomestudio.fr)** - IMPORTANT
- Nécessaire pour provisioning HPC workers
- Redondance à vérifier
- Action : Documenter redondance et backup
### ⚠️ POINTS D'ATTENTION MAJEURS
#### Backup & Rétention
1. **Rétention RDB courte** : 7 jours sur production (recommandation : 30 jours minimum)
2. **Versioning S3 désactivé** : Buckets uploads production (bel, lesaffre) sans versioning
3. **Pas de réplication S3** : Tous les buckets en fr-par uniquement
4. **Tests de restauration** : Aucune date documentée pour RDB, NFS, Graph DB
5. **Backup NFS** : Bacula configuré mais fréquence/rétention à documenter
#### Architecture & Sizing
6. **K8s production sous-dimensionné** : PRO2-XS (2 vCPU) pour bel et lesaffre
7. **2 nodes minimum** : bel, lesaffre sans marge pour maintenance
8. **Shared mutualisé** : platform + ptls sur même cluster = SPOF partagé
9. **DB node type "DEV"** : DB-DEV-S/M utilisés en production (nom trompeur)
10. **Région unique** : Toute l'infrastructure en fr-par (pas de multi-région)
#### Automatisation & Processus
11. **Pas de CI/CD** : Déploiements manuels Terraform + Ansible
12. **Pas de GitOps** : Pas d'ArgoCD, divergence possible code/déployé
13. **Pas de rollback automatisé** : Procédures de retour arrière non documentées
14. **Bus factor = 2** : Seulement 2 personnes (Azer + Vincent) autorisées Terraform
15. **State locking** : À vérifier pour éviter corruptions de state
#### Sécurité
16. **NFS commun via IP publiques** : Exposition réseau élevée
17. **GeoIP désactivé en prod** : Pas de restriction géographique (uniquement sur dev)
18. **Secrets rotation** : Pas de rotation automatique identifiée
19. **Break-glass** : Procédure d'accès d'urgence non documentée
#### Monitoring & Observabilité
20. **Prometheus HA** : À vérifier si redondé
21. **Dashboards critiques** : À inventorier et sauvegarder (export JSON)
22. **Alerting** : Système et règles non documentés
23. **MTTR/MTTD** : Métriques de temps de réponse non mesurées
24. **OpenSearch** : Localisation et backup non documentés
### 📋 DONNÉES MANQUANTES À COLLECTER
#### Infrastructure (P0 - Critique)
- [ ] Versioning activé sur bucket `msio-terraform-state` ?
- [ ] State locking Terraform activé ?
- [ ] Backup du state Terraform : fréquence et destination
- [ ] Réplication cross-region du state
- [ ] IPA : redondance, backup, procédure de restauration
#### Backup & Tests (P0 - Critique)
- [ ] Bacula : fréquence backup (full/incremental), rétention
- [ ] Dates derniers tests de restauration (RDB, NFS)
- [ ] Temps de restauration mesurés
- [ ] RPO constaté lors des tests
#### Monitoring (P1 - Haute)
- [ ] Localisation Prometheus/Grafana
- [ ] Dashboards critiques configurés
- [ ] Système d'alerting (Alertmanager ?)
- [ ] Astreinte : horaires, rotation
- [ ] MTTR/MTTD mesurés
- [ ] OpenSearch : localisation, rétention logs, backup
- [ ] Métriques surveillées (K8s, DB, NFS)
#### Réseau & DNS (P1 - Haute)
- [ ] Zone DNS gérée par IPA
- [ ] Certificats TLS : provider, renouvellement
- [ ] Wildcard certificates utilisés ?
- [ ] Autres Security Groups (hors nfs-sg)
- [ ] Rundeck : redondance, backup
#### HPC (P1 - Haute)
- [ ] Version Slurm
- [ ] Checkpoint/restart disponible ?
- [ ] Documentation provisioning Rundeck
- [ ] Specs worker nodes GP1-S/M/L et DEV1-XL
#### Business (P2 - À planifier)
- [ ] SLA contractuels par client (RTO/RPO, disponibilité, pénalités)
- [ ] Budget annuel infrastructure
- [ ] Coût estimé par heure d'indisponibilité
- [ ] DPO identifié
- [ ] Localisation légale des données
- [ ] Contacts équipe (DevOps, SRE, DBA, HPC Admin, RSSI, DPO, Direction)
### 🎯 ACTIONS RECOMMANDÉES PRIORITAIRES
#### Immédiat (Semaine 1)
1. **Vérifier versioning bucket Terraform state** + activer si désactivé
2. **Documenter backup/restauration IPA** (SPOF critique)
3. **Tester restauration RDB production** (bel ou lesaffre)
4. **Vérifier backup Bacula** : fréquence et rétention
5. **Documenter accès secrets** en cas de DR
#### Court terme (Semaine 2-3)
6. **Augmenter rétention backup RDB** : 7j → 30j pour Tier 1
7. **Activer versioning S3** sur buckets production (bel, lesaffre)
8. **Inventorier dashboards Grafana** critiques + export JSON
9. **Documenter procédure rollback** Terraform/Ansible
10. **Tests de restauration NFS** via Bacula
#### Moyen terme (1-3 mois)
11. **Redondance IPA** ou migration vers solution managée
12. **Réplication cross-region** Terraform state + buckets critiques
13. **HA NFS commun** ou stratégie de réplication
14. **CI/CD** : Pipeline automatisé pour traçabilité
15. **Bus factor** : Former personnes additionnelles sur Terraform
---
**Date de rédaction :** 10 juin 2026
**Complété par :** Vincent Ringuedé (DevOps Engineer)
**Prochaine étape :** Ateliers de collecte des données manquantes (Planning 3 semaines)
Date de validation : _______________
Validé par : _______________
Signature : _______________
Version du formulaire : 1.0 — 10 juin 2026