Gestion des Espaces de Travail (Workspaces) dans Terraform #
L’utilisation d’espaces de travail (workspaces) dans Terraform permet de gérer efficacement différentes configurations et états pour des environnements distincts, tels que le développement, la production, etc. Chaque espace de travail dispose de sa propre copie d’état (state) et peut être utilisé pour isoler les modifications.
Voici quelques commandes clés pour gérer les espaces de travail :
1. Créer un nouvel espace de travail :
terraform workspace new nom_de_l_espace_de_travail
Cette commande crée un nouvel espace de travail avec le nom spécifié.
2. Lister les espaces de travail existants :
terraform workspace list
Affiche la liste des espaces de travail actuellement disponibles.
3. Basculer vers un espace de travail spécifique :
terraform workspace select nom_de_l_espace_de_travail
Change l’espace de travail actif pour celui spécifié.
4. Supprimer un espace de travail :
terraform workspace delete nom_de_l_espace_de_travail
Supprime l’espace de travail spécifié. Soyez prudent, car cela supprime également l’état associé.
Terraform Cloud vs. Terraform CLI Workspaces #
Tant Terraform Cloud que Terraform CLI possèdent des fonctionnalités appelées “workspaces,” mais elles ont des fonctionnements différents.
-
Terraform Cloud Workspaces est obligatoire et représentent ==l’ensemble des collections d’infrastructure== d’une organisation. Ils sont essentiels pour les autorisations basées sur les rôles dans Terraform Cloud. Vous pouvez accorder des autorisations à des utilisateurs individuels ou à des groupes d’utilisateurs pour un ou plusieurs workspaces, ce qui détermine s’ils peuvent gérer les variables, effectuer des exécutions, etc. Il n’est pas possible de gérer des ressources dans Terraform Cloud sans créer au moins un workspace.
-
Terraform CLI Workspaces sont associés à un répertoire de travail spécifique et isolent plusieurs fichiers d’état dans le même répertoire de travail, ce qui vous permet de gérer plusieurs groupes de ressources avec une seule configuration. Terraform CLI ne vous oblige pas à créer des workspaces CLI.
Component | Local Terraform | Terraform Cloud |
---|---|---|
Terraform configuration | On disk | In linked version control repository, or periodically uploaded via API/CLI |
[[variables]] values | As .tfvars files, as CLI arguments, or in shell environment | In workspace |
[[State (état)]] | On disk or in remote backend | In workspace |
Credentials and secrets | In shell environment or entered at prompts | In workspace, stored as sensitive variables |
Planification et Organisation des Espaces de Travail #
Pour maximiser les avantages des fonctionnalités de gouvernance et de délégation de Terraform Cloud, il est recommandé aux organisations de diviser les configurations Terraform monolithiques en configurations plus petites et de les assigner à leurs propres workspaces. Par exemple, pour gérer l’infrastructure de l’environnement de production, vous pourriez diviser le code en configurations “networking-prod,” “app1-prod,” et “monitoring-prod,” assignant ainsi des équipes distinctes pour les gérer.
Cette approche permet des changements parallèles et facilite la réutilisation des configurations pour gérer d’autres environnements d’infrastructure (par exemple, “app1-dev,” etc.). Les administrateurs dans Terraform Enterprise peuvent définir le nombre maximal d’espaces de travail pour une organisation via les paramètres d’administration.
Terraform offre des fonctionnalités avancées de gestion des espaces de travail, permettant une meilleure organisation de vos configurations Terraform pour une utilisation optimale de Terraform Cloud.
Statut des workspaces: #
- Applied: The run was successfully applied.
- No Changes: terraform plan’s output already matches the current infrastructure state, so terraform apply doesn’t need to do anything.
- Apply Errored: The terraform apply command failed, possibly due to a missing or misconfigured provider or an illegal operation on a provider.
- Plan Errored: The terraform plan command failed (usually requiring fixes to variables or code), or a hard-mandatory Sentinel policy failed. The run cannot be applied.
- Discarded: A user chose not to continue this run.
- Canceled: A user interrupted the terraform plan or terraform apply command with the “Cancel Run” button.
Commandes utiles #
Workspace ID #
(Ca peut servir pour du Terraform Cloud API) Récupère tes valeurs et let’s go executée la requête CURL pour obtenir l’ID de ton espace de travail:
export TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4)
export ORG="MYORGNAME"
curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-aws | jq -r .data.id