Terraform, permet de gérer différents environnements pour une infrastructure sans avoir à dupliquer les fichiers de configuration dans des dossiers séparés.
Dans la plupart des cas, nous manipulons plusieurs environnements au sein d’un projet cloud (dév, staging, prod..), la fonctionnalité terraform workspace nous aide à gérer les environnements et leurs ressources pour que chaque environnement obtienne la même configuration mais sans partager les ressources.
De cette manière, nous aurons les fichiers terraform en commun pour les différents environnements, mais des instances et des ressources indépendantes seront créées par workspace. Nous aurons alors un state par workspace, ce qui nous fait éviter conflits entre les environnements.
Comment créer des workspaces sur terraform ? :
pour créer un workspace develop :
terraform workspace new develop
pour créer un workspace staging :
terraform workspace new staging
pour afficher le workspace actuel :
terraform workspace show
pour changer de workspace :
terraform workspace select <nom_du_workspace>
pour supprimer un workspace :
terraform workspace delete <nom_du_workspace>
Comment ajouter des spécificités selon le workspace ?
Dans le fichier terraform relatif à un service spécifique, par exemple un fichier .tf dédié aux machines ec2. Nous n’avons pas besoin de high availability pour ces machines dans les environnements hors productions.
Pour spécifier que nous avons besoin de machine EC2 hautement disponible, il faut spécifier dans le fichier .tf dédié à ces machines :
high_availability = (terraform.workspace == “production”) ? true : false
Ainsi les workspaces staging et développer n’auront pas cette propriété, et elle sera uniquement
appliquée au workspace de production.