Skip to main content

Terraform Cloud Workspaces

All Foundations infrastructure is managed through Terraform Cloud (TFC), with workspaces organized by project and linked to GitHub repositories via VCS integration.

Naming Conventions

Workspaces follow two naming patterns reflecting two generations of the platform:

New Convention (Pipeline-Generated)

Created by the create-business-unit and create-tenant modules:

{type}-{name}-{env_code}-{suffix}
ComponentValuesDescription
{type}bu, data, devex, platform, etc.Resource type or BU name
{name}tenant or resource nameIdentifies the specific workload
{env_code}c, d, np, p, ceEnvironment code
{suffix}5-char alphanumericUnique identifier

Examples: bu-data-c-80r13, devex-backstage-np-mly9n, data-template-d-b8cbu

Legacy Convention

Created manually or by earlier tooling:

wrkspc-{env_code}-{domain}-{name}

Examples: wrkspc-np-devex-backstage, wrkspc-ce-bu-devex, wrkspc-d-data-tenant-0001

Environment Codes

CodeEnvironment
cCommon (cross-environment, new convention)
ceCross-environment (legacy convention)
dDevelopment
np or nNon-production
pProduction

Key Active Workspaces

The top workspaces by managed resource count:

WorkspaceResourcesVCS RepoPurpose
bu-data-c-80r13346badal-io/bu-data-80r13Data business unit (largest)
bu-platform-c-0r4dp199badal-io/bu-platform-0r4dpPlatform business unit
wrkspc-ce-bu-devex149badal-io/repo-bu-devexDevEx BU (legacy)
devex-terraform-module-registry122badal-io/tfc-private-module-registryModule registry (auto-apply)
wrkspc-np-devex-backstage110badal-io/repo-devex-backstageBackstage non-prod (auto-apply, legacy)
bu-test-pltln-c75badal-io/bu-test-pltlnTest pipeline

Complete Workspace Listing

Business Unit Workspaces

WorkspaceVCS RepoWorking DirPurpose
bu-data-c-80r13badal-io/bu-data-80r13terraform/Data BU - manages tenant creation
bu-platform-c-0r4dpbadal-io/bu-platform-0r4dpterraform/Platform BU - manages platform tenants
bu-test-pltln-cbadal-io/bu-test-pltlnterraform/Test pipeline BU
bu-tfc-module-sandbox-c-34tqx-terraform/TFC module sandbox BU

Shared Workspaces

Shared workspaces manage per-BU shared infrastructure:

WorkspaceVCS RepoPurpose
data-shared-c-80r13badal-io/bu-data-80r13Data BU shared resources
devex-shared-c-9c9dlbadal-io/bu-devex-9c9dlDevEx BU shared resources
platform-shared-c-0r4dpbadal-io/bu-platform-0r4dpPlatform BU shared resources
test-shared-c-pltlnbadal-io/bu-test-pltlnTest BU shared resources

Data Tenant Workspaces

WorkspaceVCS RepoEnvironment
data-template-d-b8cbubadal-io/data-template-b8cbuDevelopment
data-template-np-b8cbubadal-io/data-template-b8cbuNon-production
data-template-p-b8cbubadal-io/data-template-b8cbuProduction
data-governance-d-f6y39badal-io/data-governance-f6y39Development

DevEx Backstage Workspaces

WorkspaceVCS RepoConventionAuto-Apply
devex-backstage-np-mly9nbadal-io/devex-backstage-mly9nNewNo
devex-backstage-p-mly9nbadal-io/devex-backstage-mly9nNewNo
wrkspc-np-devex-backstagebadal-io/repo-devex-backstageLegacyYes
wrkspc-p-devex-backstagebadal-io/repo-devex-backstageLegacyNo

Module Registry Workspace

WorkspaceVCS RepoAuto-Apply
devex-terraform-module-registrybadal-io/tfc-private-module-registryYes

This workspace manages the TFC private module registry, publishing modules like create-business-unit/platform, create-tenant/platform, and integrated_repository/github.

Legacy BU Workspaces

DevEx BU (Legacy)

WorkspaceVCS RepoEnvironment
wrkspc-ce-bu-devexbadal-io/repo-bu-devexCross-environment
wrkspc-d-bu-devexbadal-io/repo-bu-devexDevelopment
wrkspc-np-bu-devexbadal-io/repo-bu-devexNon-production
wrkspc-p-bu-devexbadal-io/repo-bu-devexProduction

Sandbox BU (Legacy)

WorkspaceVCS RepoEnvironment
wrkspc-ce-bu-sandbox-Cross-environment
wrkspc-d-bu-sandbox-Development
wrkspc-np-bu-sandbox-Non-production
wrkspc-p-bu-sandbox-Production

Demo BU (Legacy)

WorkspaceVCS RepoEnvironment
wrkspc-ce-bu-demo-Cross-environment

GKE Workspaces

WorkspaceVCS RepoPurpose
wrkspc-demos-n-gke-demo-GKE demo (non-production)
wrkspc-demos-p-gke-demo-GKE demo (production)
wrkspc-p-demo-gke-hub-GKE Hub (production)

Legacy Data Tenant Workspaces

WorkspaceEnvironment
wrkspc-d-data-tenant-0001Development
wrkspc-n-data-tenant-0001Non-production
wrkspc-p-data-tenant-0001Production
wrkspc-d-data-tn0001Development
wrkspc-n-data-tn0001Non-production
wrkspc-p-data-tn0001Production
wrkspc-d-data-tn0002Development
wrkspc-n-data-tn0002Non-production
wrkspc-p-data-tn0002Production
wrkspc-d-data-tn0003Development
wrkspc-n-data-tn0003Non-production
wrkspc-p-data-tn0003Production

AI Agent Workspaces

WorkspaceEnvironment
wrkspc-d-ai-ag0001Development
wrkspc-n-ai-ag0001Non-production
wrkspc-p-ai-ag0001Production

Other Workspaces

WorkspacePurpose
tmobbs-bu-testTest workspace
gcp-foundations-projects-workspace-managerWorkspace manager (no VCS)

Workspace Dependency Relationships

Workspaces follow the Foundations pipeline ordering. Downstream workspaces read outputs from upstream workspaces via terraform_remote_state or TFC state sharing:

Bootstrap workspaces
└── Organization workspaces
└── Environment workspaces
└── Network workspaces
└── Project / BU workspaces
└── Tenant workspaces

BU workspaces create tenant workspaces dynamically. When a new create-tenant module call is added to a BU repo, the BU workspace's apply creates new TFC workspaces for the tenant.

Environment Promotion Path

For tenants using environment-based branching:

development workspace → non-production workspace → production workspace
(d branch) (np branch) (p branch)

Changes flow through environments by merging branches:

  1. Developer creates feature branch from development
  2. PR merged to development triggers dev workspace apply
  3. development merged to non-production triggers non-prod apply
  4. non-production merged to production triggers prod apply

For trunk-based tenants, all environment workspaces trigger from the same main branch.

Auto-Apply Workspaces

Most workspaces require manual approval for applies. The following are configured with auto-apply:

WorkspaceReason
devex-terraform-module-registryModule registry updates should publish immediately
wrkspc-np-devex-backstageNon-prod Backstage deploys automatically for rapid iteration

Two Generations

The workspace inventory reflects two generations of the Foundations platform:

Legacy Workspaces (wrkspc- prefix)

  • Created manually or by earlier tooling
  • Use cross-environment (ce) pattern with per-env overrides
  • VCS repos use repo- prefix (e.g., repo-bu-devex)
  • Some have no VCS connection (managed via CLI or API)

New Pipeline-Generated Workspaces

  • Created by the create-business-unit and create-tenant modules
  • Use environment-code-based naming with random suffixes
  • VCS repos use the module-generated names (e.g., bu-data-80r13)
  • All have VCS connections and follow the standard branching model

Both generations coexist in the same TFC organization. Legacy workspaces continue to function but new workloads use the pipeline-generated pattern.