Le problème
Vous gérez des dizaines de projets Terraform. Chaque semaine, les mêmes questions reviennent :
- “Ce module est à jour ?”
- “Quel projet utilise encore Terraform 0.14 ?”
- “On a combien d’environnements sur ce repo ?”
Répondre demande d’ouvrir chaque projet, fouiller les fichiers, comparer manuellement. Temps perdu, erreurs possibles, frustration garantie.
Dans mon approche inventory-driven, la première étape est toujours la même : inventorier avant d’agir. Mais comment faire quand on a 30, 50 ou 100 repos Terraform à auditer ?
L’analogie du carnet de santé
Un médecin consulte le carnet de santé d’un patient pour détecter des anomalies avant qu’elles ne deviennent critiques. Il mesure les constantes vitales, compare avec les valeurs de référence, identifie les écarts.
Le Carnet de Santé IAC fait la même chose pour vos projets Terraform :
- Mesure les “constantes vitales” : versions des modules, providers, Terraform
- Compare avec vos standards : version cible, documentation requise, CI/CD mature
- Identifie les projets “malades” : dette technique accumulée, risques de sécurité
Ce que l’outil analyse
Un scan d’un groupe GitLab extrait automatiquement :
Depuis les fichiers Terraform
- Blocs
module: nom, source, version required_providers: providers et contraintes de versionrequired_version: version Terraform requisebackend: type de stockage du state
Depuis GitLab API
- Liste des projets contenant du HCL
- Nombre de branches par projet
- Présence de README, Renovate, Jenkinsfile
Depuis Terraform Registry
- Dernière version disponible de chaque module
- Comparaison automatique avec la version déclarée
Le radar de santé : 6 dimensions
Le résultat est synthétisé dans un radar à 6 axes :
| Dimension | Ce qu’elle mesure |
|---|---|
| Documentation | README présent + Renovate configuré |
| Modules à jour | % de modules version actuelle = dernière |
| Version TF | Écart avec la version Terraform cible |
| Environnements | Couverture dev/staging/prod |
| Facilité migration | Inverse du score de complexité |
| Maturité CI/CD | Jenkinsfile + branches + README + Renovate |
Un radar équilibré = une bonne hygiène de développement. Un axe faible = un point d’amélioration prioritaire.
La matrice de complexité : par où commencer ?
L’outil calcule un score de complexité (0-10) pour chaque projet :
| Score | Complexité | Action recommandée |
|---|---|---|
| 0-2 | Facile | Quick win : migration en quelques heures |
| 2-4 | Modéré | Sprint standard : prévoir 1-2 jours |
| 4-7 | Complexe | Projet complexe : prévoir une semaine |
| 7-10 | Très complexe | Chantier majeur : découper en étapes |
Le score est calculé sur :
- Écart modules (0-6 pts) : combien de versions de retard ?
- Version Terraform (0-2 pts) : conforme au standard ?
- Environnements (0-2 pts) : combien à tester lors de la migration ?
Résultat : une liste ordonnée pour planifier les sprints.
Avant / Après
Audit manuel (avant)
1. Ouvrir GitLab
2. Naviguer vers le projet
3. Ouvrir versions.tf
4. Noter la version du provider
5. Aller sur registry.terraform.io
6. Comparer
7. Répéter pour chaque projet...
Temps estimé : 5-10 min par projet × 30 projets = 2h30 minimum
Avec le Carnet de Santé (après)
1. Lancer le scan
2. Consulter le tableau de bord
Temps estimé : 5 minutes pour TOUS les projets
Cas d’usage typiques
“On doit migrer vers Terraform 1.5”
- Lancer un scan
- Onglet “Versions & Configuration”
- Filtrer les projets avec version < 1.5
- Prioriser avec la Matrice de Complexité
- Planifier les sprints avec des données, pas des intuitions
“Un CVE touche le provider AWS < 5.0”
- Onglet “Providers”
- Identifier tous les projets avec AWS < 5.0
- Quantifier l’effort de remédiation
- Agir sur les projets critiques en premier
“Nouveau dans l’équipe, je découvre le périmètre”
- Lancer un scan
- Voir la liste des projets avec leurs caractéristiques
- Comprendre en 5 min ce qui aurait pris des heures
Carnet de Santé vs Renovate
Renovate automatise les mises à jour. Le Carnet de Santé diagnostique l’état de santé. Les deux sont complémentaires :
| Aspect | Renovate | Carnet de Santé |
|---|---|---|
| Objectif | Automatiser les mises à jour | Diagnostiquer l’état global |
| Périmètre | 1 projet à la fois | Tous les projets d’un groupe |
| Action | Crée des MR automatiques | Génère un rapport consolidé |
| Prérequis | Config dans chaque repo | Aucune configuration requise |
Workflow recommandé :
- Carnet de Santé pour l’audit initial et identifier les projets à risque
- Renovate pour automatiser les mises à jour une fois les projets conformes
- Carnet de Santé pour vérifier que Renovate est déployé partout
ROI : économie sur les audits
Les audits internes ou externes ont un coût :
| Type d’audit | Coût estimé | Délai |
|---|---|---|
| Diagnostic qualité application | 5-15k€ | 10-20 jours |
| Bilan état de santé technologique | 5-10k€ | 10-20 jours |
| Audit conformité | ~10k€ | Variable |
Avec le Carnet de Santé :
- Scan automatisé en 5 minutes
- Résultat immédiat et reproductible
- Audits illimités sans coût additionnel
ROI dès le 2ème audit évité.
Stack technique
L’outil est une application web légère :
- Frontend : React + Vite + TailwindCSS v4
- Stockage : IndexedDB (historique local)
- API : GitLab REST + GraphQL, Terraform Registry
- Déploiement : Static hosting (pas de backend)
npm install
npm run dev
# → http://localhost:5173/
Configuration minimale : URL GitLab + Token (read_api + read_repository) + Group ID.
Intégration dans la méthodologie
Le Carnet de Santé IAC s’inscrit dans mon approche globale :
| Échelle | Outil | Article |
|---|---|---|
| 1 projet legacy | Trivy (scan vulnérabilités) | Reprendre un projet legacy |
| N projets Terraform | Carnet de Santé IAC | Cet article |
| Organisation entière | Approche inventory-driven | Infrastructure Inventory-Driven |
Même principe à chaque échelle : inventorier avant d’agir, mesurer pour prioriser.
Ressources
- Code source : GitHub (à venir)
- Infrastructure as Code Inventory-Driven — L’approche globale
- Reprendre un projet legacy — Application sur un projet unique
Le Carnet de Santé IAC transforme l’audit Terraform d’une corvée manuelle en un indicateur de pilotage. Comme un médecin avec son carnet de santé, vous détectez les anomalies avant qu’elles ne deviennent critiques.