Introduce building_block_definition_version_spec resource in meshStack Terraform provider
Andreas Grub
Introduce building_block_definition_version_spec resource in meshStack Terraform provider
Problem / Use Case
The current
meshstack_building_block_definition
Terraform resource bundles the Building Block Definition (BBD) entity — which holds the stable UUID and WIF subject — together with its version spec (inputs, implementation config, release state) in a single resource.This creates an unresolvable circular dependency in a common Workload Identity Federation (WIF) setup:
- You create meshstack_building_block_definitionto get the BBD UUID and its WIF subject claim.
- You configure your backplane (e.g., an AWS IAM role trust policy, a GCP WIF pool principal) to trust that WIF subject.
- The backplane outputs (e.g., the IAM role ARN or GCP pool ID) must then be passed back as static inputsto the BBD's version spec.
Because the BBD entity and its version spec are coupled in a single Terraform resource, Terraform cannot:
- Create the BBD (to obtain the UUID/WIF subject),
- Configure the backplane using that UUID,
- Complete the BBD version spec with backplane outputs —
...all in a **single
terraform apply
**. The dependency graph becomes circular within a single resource boundary, forcing platform engineers to split the apply into multiple manual steps.This affects any WIF-secured BBD where the backplane provides both the trust configuration
and
a static input to the same BBD version spec — a common pattern in real-world platform engineering setups.Value / Impact
Introducing a separate
building_block_definition_version_spec
resource (decoupled from meshstack_building_block_definition
) would allow Terraform to resolve the full dependency graph in one pass:- meshstack_building_block_definitioncreates the BBD and exposes its UUID and WIF subject as computed attributes.
- Downstream backplane resources (IAM roles, WIF pool providers) consume the WIF subject.
- meshstack_building_block_definition_version_specconsumes backplane outputs as static inputs — referencing the BBD created in the same configuration.
This unlocks:
- **Single-pass terraform apply** for the complete BBD + backplane setup, even when backplane config flows back as a static input to the BBD version spec.
- Full GitOps automation— the entire BBD lifecycle (definition, version spec, backplane trust) is declared in one Terraform configuration, without manual sequencing.
- Reduced operational risk— no more partially-applied states from multi-step apply workflows.
- Natural alignment with the meshStack API, which already modelsmeshBuildingBlockDefinitionandmeshBuildingBlockDefinitionVersionas separate objects.
This is especially impactful for platform teams managing many BBDs with WIF-secured backplanes, and for reusable Building Block Hub modules where full automation is a key requirement.
Context / Links
- Add WIF subject attribute to the Building Block Definition Terraform resource (Canny) — parent feature request; the building_block_definition_version_specsplit is the follow-on for the general case
- WIF for Building Block Runs — shipped (Canny)
- meshStack Terraform Provider — meshstack_building_block_definition
- meshStack API — meshBuildingBlockDefinitionVersion
If you're hitting this issue, reach out to our customer success team or support@meshcloud.io — we'd love to understand your specific setup and help prioritize this.