Carnet de Santé IAC : Auditer des dizaines de projets Terraform en 5 minutes

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 version
  • required_version : version Terraform requise
  • backend : 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 :

DimensionCe qu’elle mesure
DocumentationREADME présent + Renovate configuré
Modules à jour% de modules version actuelle = dernière
Version TFÉcart avec la version Terraform cible
EnvironnementsCouverture dev/staging/prod
Facilité migrationInverse du score de complexité
Maturité CI/CDJenkinsfile + 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 :

ScoreComplexitéAction recommandée
0-2FacileQuick win : migration en quelques heures
2-4ModéréSprint standard : prévoir 1-2 jours
4-7ComplexeProjet complexe : prévoir une semaine
7-10Très complexeChantier 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”

  1. Lancer un scan
  2. Onglet “Versions & Configuration”
  3. Filtrer les projets avec version < 1.5
  4. Prioriser avec la Matrice de Complexité
  5. Planifier les sprints avec des données, pas des intuitions

“Un CVE touche le provider AWS < 5.0”

  1. Onglet “Providers”
  2. Identifier tous les projets avec AWS < 5.0
  3. Quantifier l’effort de remédiation
  4. Agir sur les projets critiques en premier

“Nouveau dans l’équipe, je découvre le périmètre”

  1. Lancer un scan
  2. Voir la liste des projets avec leurs caractéristiques
  3. 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 :

AspectRenovateCarnet de Santé
ObjectifAutomatiser les mises à jourDiagnostiquer l’état global
Périmètre1 projet à la foisTous les projets d’un groupe
ActionCrée des MR automatiquesGénère un rapport consolidé
PrérequisConfig dans chaque repoAucune configuration requise

Workflow recommandé :

  1. Carnet de Santé pour l’audit initial et identifier les projets à risque
  2. Renovate pour automatiser les mises à jour une fois les projets conformes
  3. 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’auditCoût estiméDélai
Diagnostic qualité application5-15k€10-20 jours
Bilan état de santé technologique5-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 :

ÉchelleOutilArticle
1 projet legacyTrivy (scan vulnérabilités)Reprendre un projet legacy
N projets TerraformCarnet de Santé IACCet article
Organisation entièreApproche inventory-drivenInfrastructure Inventory-Driven

Même principe à chaque échelle : inventorier avant d’agir, mesurer pour prioriser.


Ressources


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.