Nos astuces de terrain pour éviter les pièges et déployer sereinement sur le cloud
Chez Daveo, du Terraform, on en fait depuis longtemps. On a vu des architectures magnifiques, des bugs improbables, des états corrompus à 3h du matin… et surtout, on a appris ce qui marche vraiment. Dans cet article, je te partage nos 15 bonnes pratiques et astuces pour garder une infra propre, stable et facile à maintenir. On parle organisation, modules, state, sécurité AWS, pipelines… bref, tout ce qui fait la différence dans un vrai projet !
1. Mets ton code dans Git (toujours)
On commence par le plus basique, Terraform sans Git, c’est conduire sans boucler sa ceinture.
Avantages :
- Historique clair
- Rollback possible
- Branches par fonctionnalités
- Revue de code obligatoire sur l’infra
Chez Daveo, aucun projet Terraform n’existe sans repo Git. C’est non négociable !
2. Garde ton code Terraform bien rangé
Après avoir mis ton code sur Git, la seconde étape c’est de bien le ranger.
Nous, on sépare systématiquement :
provider.tf→ configuration du provider AWS.
main.tf→ les ressources principales.
variables.tf→ la liste des variables.
outputs.tf→ les informations à exposer.
versions.tf→ verrouillage des versions.
Pourquoi c’est important ?
Parce qu’un projet Terraform grandit très vite. Une structure propre rend le code lisible, maintenable et partageable.
3. Choisis des noms parlants
Quand tu retrouves un aws_s3_bucket.b1, tu te demandes : « c’est pour quoi déjà ? »
Alors que aws_s3_bucket.static_site_bucket, là, aucun doute.
Un bon nom :
- Décrit la ressource
- Évite les collisions
- Aide à comprendre sans documentation
Terraform aime la clarté. L’humain aussi. On écrit pour nos collègues, et pour nous dans deux mois.
4. Centralise toutes tes variables
Une variable ici, une autre là… c’est le début du chaos, c’est pour cela qu’il faut que TOUTES les variables vivent dans variables.tf. Cela garantie la cohérence, la possibilité de tout surcharger facilement et une simplification du changement d’environnement.
5. Tag tout ce que tu crées sur le cloud
Les tags nous ont déjà sauvé plus d’un audit. Ils servent à identifier, filtrer, surveiller les coûts, et même automatiser.
Nos tags minimums :
Environment
Project
Owner
CostCenter
Et surtout, on les applique partout.
6. Utilise les modules pour arrêter de copier-coller
Dès que tu te surprends à copier trois blocs identiques, c’est le moment de créer un module.
Avantages :
- Standardisation
- Réduction du code répétitif
- Simplification des déploiements
Tu crées une fois, tu réutilises partout.
Exemple de modules typiques chez Daveo :
- Réseau (VPC, subnets, routes)
- Compute (EC2, autoscaling)
- Stockage (S3)
- Distribution (CloudFront)
- Sécurité (IAM)
7. Appuie-toi sur les modules du registry
On adore le Terraform Registry, il contient des modules solides, documentés et maintenus.
Pourquoi les utiliser ?
- Gain de temps
- Moins de bugs
- Code validé par la communauté
Pourquoi réinventer la roue quand quelqu’un l’a déjà fait proprement ?
8. Documente tes modules
Le README d’un module, c’est le cadeau que tu fais à ton toi du futur.
Un bon README explique :
- Comment utiliser le module
- Les variables
- Les outputs
- Les dépendances
Pour nous, c’est obligatoire. Et ça nous a évité des centaines de questions internes.
9. Déplace le state sur S3
Le state local, c’est pour les tests. En équipe, c’est S3 obligatoire et on active le versioning du bucket.
Pourquoi ?
- Collaboration possible et plus simple
- State centralisé
- Réduction des risques
- Protection contre les conflits
10. Sépare les environnements (vraiment)
Notre organisation :
- Soit des dossiers séparés (
/dev, /staging, /prod),
- Soit des workspaces bien gérés.
On ne mélange jamais deux environnements dans les mêmes fichiers. Ça évite l’erreur d’appliquer au mauvais environnement.
11. Protège les secrets (toujours)
Règle en or : Terraform ne crypte rien par défaut, si un secret apparaît dans un .tf, quelqu’un va le pousser dans Git.
Pour résoudre ce problème tu peux utiliser SSM Parameter Store, Secrets Manager, ou des variables d’environnement. Et on active sensitive = true.
12. Donne à Terraform juste les droits dont il a besoin
Nous, on crée des rôles dédiés, avec des permissions minimales.
Pourquoi réduire les permissions ?
- Limiter l’impact d’un accident,
- Éviter les failles critiques,
- Sécuriser vos pipelines CI/CD.
Un rôle Terraform trop large = faille potentielle.
13. Verrouille les versions (provider, modules, Terraform)
Une mise à jour inattendue du provider peut casser ton infra.
Ça nous est arrivé une fois, depuis, on verrouille toutes les versions :
- du provider
- de Terraform lui-même
- des modules
14. Passe par un pipeline CI/CD
Chez Daveo, on ne fait pas de apply en local pour la prod. Jamais !
On met toujours des pipelines du type :
terraform fmt→ formatage
terraform validate→ validation
terraform plan→ aperçu
- Validation humaine → OK
terraform apply→ déploiement (via un bot ou un runner)
C’est propre et traçable.
15. Regarde toujours le plan avant d’appliquer
Et pour finir, il faut toujours lire le plan avant de l’appliquer. On en plaisante souvent au bureau en disant que « Le plan, c’est comme un contrat de mariage : tu le lis AVANT de dire OUI. »
terraform plan vous donne une vision claire :
- Ce que Terraform va créer
- Ce qu’il va modifier
- Ce qu’il va détruire
C’est souvent la dernière étape avant une catastrophe…
On a appris ces bonnes pratiques en déployant des dizaines d’infras, en corrigeant des erreurs et en améliorant notre façon de travailler. Terraform est un outil génial mais il demande une certaine discipline et rigueur.
Avec ces 15 conseils, tu pars déjà avec un setup de niveau pro : lisible, sécurisé, automatisé et prêt à évoluer.


