Terraform Cloud vs CLI
Terraform Cloud (TFC) ajoute une couche de collaboration au-dessus de Terraform CLI :
- Remote execution — Les plans et apply s'executent sur les serveurs TFC
- State management — Le state est stocke et versionne automatiquement
- VCS integration — Declenchement automatique sur push Git
- Policy as Code — Sentinel ou OPA pour valider les plans
- Private Registry — Registre prive de modules
Configuration du backend cloud
terraform {
cloud {
organization = "mon-organisation"
workspaces {
name = "production"
}
}
}
# Authentification
# terraform login
VCS-driven workflow
Le workflow VCS est le plus courant en equipe :
- Un developpeur cree une branche et ouvre une Pull Request
- TFC execute automatiquement un speculative plan
- L'equipe revoit le plan dans la PR
- Apres merge sur main, TFC execute le plan et attend la confirmation
- Un operateur confirme l'apply
Sentinel Policy as Code
# Exemple de policy Sentinel : interdire les instances trop grandes
import "tfplan/v2" as tfplan
allowed_types = ["t3.micro", "t3.small", "t3.medium"]
main = rule {
all tfplan.resource_changes as _, rc {
rc.type is "aws_instance" implies
rc.change.after.instance_type in allowed_types
}
}
Variables et secrets dans TFC
# Les variables sensibles sont stockees de maniere securisee
# Elles ne sont jamais affichees dans les logs
# Types : Terraform variables et Environment variables
# Scope : workspace, variable set (partage entre workspaces)
Bonne pratique : Utilisez des variable sets pour partager les credentials entre workspaces sans les dupliquer.