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.