Aller au contenu

Workspace

·
organisation terraform
Jérémy Norgol
Auteur
Jérémy Norgol
Consultant ingénieur Linux Devops

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.

  1. 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.

  2. 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

Articles connexes

Backend
terraform
Commandes de base
terraform
Déployer un agent Terraform - Docker
docker agent terraform