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

Projects, équipes et organisation dans HCP Terraform

10 min de lecture

logo terraform

À mesure que votre nombre de workspaces grandit, retrouver celui dont vous avez besoin devient un défi. Les projects regroupent vos workspaces par contexte (équipe, produit, environnement), et les teams contrôlent qui peut faire quoi. Ce guide explique comment organiser HCP Terraform à l’échelle.

  • À quoi servent les projects et comment ils structurent l’organisation
  • Comment créer un project et y affecter des workspaces
  • Le système de permissions : organisation, project, workspace
  • Les différents rôles d’équipe (owners, manage, read, write, admin)
  • Les limites du free tier sur les permissions avancées

Un project est un conteneur logique qui regroupe des workspaces liés :

ConceptRôleExemple
OrganizationConteneur racine — regroupe toutstephrobert-terraform-labs
ProjectRegroupe des workspaces par contexteassociate-004, professional, sandbox
WorkspaceUnité de travail (config + state + variables)associate-004-01-init

Quand vous créez un workspace sans spécifier de project, il atterrit dans le Default Project. Ce project existe automatiquement dans toute organisation et ne peut pas être supprimé.

Pour les labs, vous avez déjà créé trois projects dans le guide de présentation :

ProjectUsage
associate-004Labs liés à la certification Associate
professionalLabs liés à la certification Professional
sandboxExpérimentations libres
  1. Créez un project

    Dans l’interface web : OrganizationProjectsNew Project.

    Donnez un nom explicite et une description. Les noms acceptent lettres, chiffres, tirets, underscores et espaces internes.

  2. Déplacez des workspaces existants

    Depuis la page d’un workspace : SettingsGeneralProject. Sélectionnez le project cible et enregistrez. Le workspace conserve son state, ses variables et son historique.

    Pour déplacer un workspace, vous devez disposer de la permission d’organisation Manage all Projects, ou être admin à la fois sur le project source et sur le project de destination.

  3. Créez un workspace directement dans un project

    Avec le bloc cloud {}, le workspace est automatiquement créé dans le project spécifié :

    terraform {
    cloud {
    organization = "stephrobert-terraform-labs"
    workspaces {
    project = "sandbox"
    name = "sandbox-test-network"
    }
    }
    }
  4. Supprimez un project

    Un project ne peut être supprimé que s’il ne contient plus de workspaces ni de Stacks. Déplacez ou supprimez-les d’abord. Le Default Project peut être renommé mais pas supprimé.

HCP Terraform applique les permissions à trois niveaux, du plus large au plus fin :

NiveauCe qu’il contrôleQui le configure
OrganizationMembres, tokens API, registry, policy setsOrganization owners
ProjectAccès aux workspaces du projectOrganization owners + project admins
WorkspaceOpérations sur un workspace précisAdmins du project ou du workspace

Une team est un groupe d’utilisateurs qui partagent les mêmes droits. Les rôles prédéfinis diffèrent selon le niveau :

Rôles au niveau project :

RôleCe qu’il permet
Project adminGérer les workspaces, les équipes et les réglages du project
Project maintainAdministration des workspaces du project, sans gérer le project lui-même
Project writeCréer des runs, modifier les variables des workspaces du project
Project readLecture seule : voir les runs, states, variables (masquées)

Rôles au niveau workspace :

RôleCe qu’il permet
Workspace adminAdministration d’un workspace spécifique
Workspace writeLancer des runs et modifier les variables
Workspace planLancer des plans (sans apply)
Workspace readLecture seule sur un workspace

Les permissions sont additives. HCP Terraform accorde toujours à un utilisateur le niveau d’accès le plus élevé qu’il reçoit, quel que soit le scope où ce droit a été défini.

En pratique :

  • Un Organization owner est admin de tous les projects et workspaces.
  • Un rôle project s’applique à tous les workspaces du project.
  • Un rôle workspace affine l’accès à un workspace particulier.
  • Un droit plus permissif accordé à un autre niveau l’emporte toujours.
  • Les permissions ne remontent jamais : un rôle workspace ne donne pas de droits sur le project.

Adoptez une convention lisible dès le départ :

PatternExempleQuand l’utiliser
<produit>-<env>frontend-prodPetite organisation, peu de produits
<équipe>-<produit>-<env>platform-networking-stagingOrganisation moyenne
<business-unit>-<produit>-<env>finance-trading-prodGrande organisation
StratégieAvantageInconvénient
Par produitVision claire par livrableMultiplie les projects
Par équipePermissions naturellesUn produit peut impliquer plusieurs équipes
Par environnementIsolation stricte dev/prodDisperse les workspaces d’un même produit
Hybride produit + envLe plus courant et le plus lisiblePlus de projects à gérer

Pour les labs d’apprentissage, le découpage par contexte (certification, sandbox) est suffisant. En entreprise, le découpage hybride produit + environnement est le plus fréquent.

Les variable sets peuvent être scopés par project — ce qui signifie que toutes les variables d’un set sont disponibles dans tous les workspaces du project :

Variable setScopeContenu
common-tagsOrganization (global)Tags obligatoires : team, cost-center
aws-dev-credentialsProject frontend-devCredentials AWS pour l’environnement dev
network-config-prodProject networking-prodVPC ID, subnets, security groups

Cette approche évite de dupliquer les mêmes variables dans chaque workspace.

Pour les pipelines CI/CD et l’automatisation, HCP Terraform propose des tokens à différents niveaux :

Type de tokenPortéeUsage recommandé
User tokenPermissions de l’utilisateurDéveloppement, CLI, automatisations personnelles
Team tokenPermissions des workspaces accessibles à la teamPipeline CI/CD d’une équipe
Organization tokenRessources et réglages d’organisationBootstrap, administration

Important : un organization token ne peut pas démarrer de run ni créer de configuration version. Pour cela, utilisez un user token ou un team token.

SymptômeCause probableSolution
Error: Unauthorized lors d’un runL’utilisateur n’a pas les permissions write sur le workspaceVérifiez le rôle de la team
Impossible de déplacer un workspacePermissions insuffisantes sur le project cibleDemandez les droits au project admin
Le Default Project contient trop de workspacesWorkspaces créés sans spécifier de projectDéplacez-les vers des projects dédiés
Les permissions project ne fonctionnent pasÉdition gratuiteLes permissions granulaires nécessitent Essentials+
Un membre voit tous les workspacesEn free tier, tous les membres sont ownersNormal en free tier — upgrade pour restreindre
  • Les projects structurent vos workspaces par contexte (produit, équipe, environnement). Sans eux, tout finit dans le Default Project.
  • Les permissions sont additives : HCP Terraform accorde le niveau le plus élevé reçu, quel que soit le scope.
  • En édition gratuite, l’organisation fonctionne avec la team owners uniquement (5 membres max). Les permissions granulaires par project nécessitent Essentials+.
  • Les rôles project (Read, Write, Maintain, Admin) et workspace (Read, Plan, Write, Admin) sont distincts.
  • Adoptez une convention de nommage dès le départ — elle devient difficile à changer ensuite.
  • Les variable sets scopés par project évitent la duplication de variables entre workspaces du même contexte.
  • Utilisez des team tokens (pas des user tokens) pour les pipelines CI/CD.

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