Aller au contenu
Infrastructure as Code medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Créer et piloter un workspace HCP Terraform

12 min de lecture

logo terraform

Un workspace HCP Terraform est l’unité de travail centrale de la plateforme : il contient votre configuration, votre state, vos variables et l’historique complet de vos runs. Ce guide vous accompagne dans la création de votre premier workspace CLI-driven et votre premier run distant.

  • Ce qu’est un workspace HCP Terraform et ce qu’il contient
  • La différence fondamentale entre workspace CLI et workspace HCP
  • Comment créer un workspace et lancer un run distant
  • Les réglages essentiels : mode d’exécution, auto-apply, verrouillage
  • Comment naviguer dans l’interface web pour suivre vos runs

Un workspace dans HCP Terraform regroupe :

ComposantRôle
ConfigurationLe code Terraform (envoyé par CLI, VCS ou API)
StateL’état de l’infrastructure réelle, versionné et chiffré
VariablesLes valeurs d’entrée (Terraform + environnement)
Historique des runsChaque plan et apply avec logs et résultat
RéglagesMode d’exécution, auto-apply, verrouillage, notifications

Chaque workspace gère une seule unité d’infrastructure — typiquement un environnement (dev, staging, prod) ou un composant isolé (réseau, base de données, application).

Cette distinction est une source fréquente de confusion, y compris dans les examens de certification.

CritèreWorkspace CLI (terraform workspace)Workspace HCP Terraform
Ce que c’estUn dossier de state nommé dans le même projetUne unité de travail complète dans la plateforme
StatePlusieurs states dans le même backendUn state unique par workspace
VariablesPartagées (même terraform.tfvars)Propres à chaque workspace
HistoriqueAucunComplet (logs, approbations, durée)
PermissionsAucunePar équipe, par projet
Usage recommandéTests rapides en localTout le reste (équipe, CI/CD, production)
  • Un compte HCP Terraform avec une organisation créée → Découvrir HCP Terraform
  • Terraform CLI ≥ 1.6 installé (le bloc cloud { workspaces { project } } nécessite 1.6+)
  • terraform login exécuté avec succès
  1. Créez un répertoire de travail

    Fenêtre de terminal
    mkdir -p ~/terraform-workspace-hcp && cd ~/terraform-workspace-hcp
  2. Créez le fichier main.tf

    Cette configuration minimale crée une ressource terraform_data — disponible via un provider intégré, sans dépendance externe — suffisante pour valider le fonctionnement de l’exécution distante sans infrastructure réelle :

    terraform {
    required_version = ">= 1.6.0"
    cloud {
    organization = "stephrobert-terraform-labs"
    workspaces {
    project = "associate-004"
    name = "associate-004-01-init"
    }
    }
    }
    resource "terraform_data" "hello" {
    input = "Premier run HCP Terraform"
    }
    output "confirmation" {
    value = terraform_data.hello.output
    }

    Le bloc cloud {} indique à Terraform CLI d’envoyer la configuration à HCP Terraform pour exécution distante. Le workspace associate-004-01-init est créé automatiquement s’il n’existe pas encore.

  3. Initialisez le projet

    Fenêtre de terminal
    terraform init

    Terraform CLI détecte le bloc cloud {}, se connecte à HCP Terraform et configure le workspace distant. La sortie attendue :

    Initializing HCP Terraform...
    Initializing provider plugins...
    HCP Terraform has been successfully initialized!
  4. Lancez votre premier plan

    Fenêtre de terminal
    terraform plan

    La commande envoie votre code à HCP Terraform qui exécute le plan sur ses propres machines. Le résultat s’affiche dans votre terminal, mais le calcul s’est fait à distance :

    Running plan in HCP Terraform...
    Terraform v1.x.x
    ...
    Plan: 1 to add, 0 to change, 0 to destroy.
    Changes to Outputs:
    + confirmation = "Premier run HCP Terraform"
  5. Appliquez les changements

    Fenêtre de terminal
    terraform apply

    En mode manual apply (défaut), HCP Terraform attend votre confirmation dans le terminal avant d’appliquer. Tapez yes pour confirmer.

    Do you want to perform these actions in workspace "associate-004-01-init"?
    Terraform will perform the actions described above.
    Only 'yes' will be accepted to approve.
    Enter a value: yes
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    Outputs:
    confirmation = "Premier run HCP Terraform"
  6. Vérifiez dans l’interface web

    Rendez-vous sur app.terraform.io → votre organisation → project associate-004 → workspace associate-004-01-init.

    Vous y trouvez :

    • L’historique des runs avec le plan et l’apply que vous venez d’exécuter
    • Le state avec la terraform_data créée
    • Les variables (vides pour l’instant)

Une fois le workspace créé, vous pouvez ajuster ses réglages depuis l’interface web (Settings dans le workspace).

Le mode d’exécution détermine le plan et l’apply sont calculés :

ModeComportementCas d’usage
Project DefaultHérite du réglage défini au niveau du projectRéglage par défaut dans l’UI
RemotePlan et apply exécutés sur les VM HCP TerraformUsage standard, recommandé
LocalPlan et apply exécutés sur votre poste, state stocké à distanceDébogage, accès à des ressources locales
AgentPlan et apply exécutés par un agent auto-hébergéInfra privée non accessible depuis Internet

Pour les labs d’apprentissage, le mode Remote est toujours le bon choix.

RéglageComportement
Manual apply (défaut)Le plan est calculé, puis vous devez confirmer l’apply
Auto-applyL’apply démarre automatiquement après un plan réussi

Dans un run CLI-driven, terraform apply affiche une demande de confirmation dans le terminal. Pour auto-appliquer depuis la CLI, utilisez terraform apply -auto-approve. Le réglage Auto-apply du workspace concerne surtout les runs lancés via l’interface, l’API ou le VCS.

Pour l’apprentissage, gardez manual apply — cela vous oblige à relire le plan avant d’appliquer.

HCP Terraform verrouille automatiquement le workspace pendant un run pour empêcher les modifications concurrentes. Ce verrouillage est transparent : si un collègue lance un terraform apply pendant que vous êtes en train d’en exécuter un, son run reste en Pending tant que le verrou n’est pas levé.

Un verrou bloque les applies et la plupart des plans, mais pas tous : les plan-only runs peuvent encore être autorisés, car ils n’affectent ni les ressources ni le state.

Vous pouvez aussi verrouiller manuellement un workspace depuis l’interface pour empêcher tout run — utile pendant une maintenance ou un incident.

Quand Terraform CLI envoie votre configuration à HCP Terraform en mode CLI-driven, il transfère tous les fichiers du répertoire courant. Pour exclure les fichiers inutiles, créez un .terraformignore à la racine :

.git/
*.md
docs/
tests/

Ce fichier fonctionne comme un .gitignore — il réduit la taille du téléversement et accélère les runs.

Depuis l’interface web, naviguez dans votre organisation pour voir tous les workspaces. Le filtre par project permet de retrouver rapidement un workspace.

Quand un lab est terminé, nettoyez :

  1. Détruisez les ressources gérées

    Fenêtre de terminal
    terraform destroy

    Confirmez avec yes. Cette commande supprime les ressources dans l’infrastructure cible mais conserve le workspace.

  2. Supprimez le workspace (optionnel)

    Dans l’interface web : SettingsDestruction and DeletionDelete Workspace.

    Par défaut, un administrateur de workspace ne peut supprimer qu’un workspace déverrouillé qui ne gère plus d’infrastructure. Un organization owner peut toutefois forcer la suppression (force delete), ce qui coupe le lien avec le state sans détruire les ressources restantes. Le terraform destroy préalable reste la bonne pratique.

Si vous avez une configuration existante avec un backend "s3" ou un backend "local" et que vous voulez migrer vers HCP Terraform :

  1. Remplacez le bloc backend par un bloc cloud {} dans votre fichier de configuration.

  2. Relancez l’initialisation avec migration :

    Fenêtre de terminal
    terraform init -migrate-state

    Terraform CLI vous propose de copier le state existant vers le nouveau workspace HCP Terraform. Confirmez pour transférer l’état.

SymptômeCause probableSolution
Error: No credentials found for app.terraform.ioterraform login non exécuté ou token expiréRelancez terraform login
Error: workspace not foundOrganisation ou project mal orthographié dans le bloc cloud {}Vérifiez les noms dans l’interface web
Le run reste en pendingWorkspace verrouillé par un run précédentAttendez la fin du run ou déverrouillez manuellement
Error: cloud and backend are mutually exclusiveBloc backend et bloc cloud présents simultanémentSupprimez le bloc backend, gardez cloud {}
Le plan affiche des changements inattendusVariables définies dans le workspace qui écrasent vos .tfvars locauxVérifiez les variables dans Settings → Variables
Le téléversement est lentTrop de fichiers envoyés à HCP TerraformAjoutez un .terraformignore pour exclure les fichiers inutiles
  • Un workspace HCP Terraform regroupe configuration, state, variables et historique des runs — c’est bien plus qu’un simple state nommé.
  • Ne confondez pas terraform workspace (CLI, state local) et un workspace HCP Terraform (unité de travail complète sur la plateforme). La CLI peut toutefois interagir avec les workspaces HCP distants.
  • Le bloc cloud {} dans votre configuration connecte Terraform CLI à un workspace distant. En exécution distante, un bloc backend {} explicite n’est plus nécessaire.
  • Le workspace se crée automatiquement au premier terraform init en mode CLI-driven.
  • Le mode d’exécution par défaut est Remote : le plan et l’apply sont calculés sur les VM d’HCP Terraform, pas sur votre poste.
  • Manual apply est le défaut — gardez-le pour l’apprentissage.
  • Utilisez .terraformignore pour accélérer les téléversements.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn