Comment gérer des environnements avec Terraform Workspace ?

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. 

Vous avez un projet Cloud ?