

main.tf is 10,000+ lines and 613 resources — 131 Cloud Run services, 77 Pub/Sub topics, 108 subscriptions, 216 IAM bindings, 60 schemas. Hold that number; it comes back.
{tenant}/{cloud}/{project}/onboard and {tenant}/{cloud}/{project}/deploy.

409 Resource already exists, or worse, succeeds by clobbering something.import block instead of a create. Terraform adopts the resource into state rather than recreating it.
0 to change, 0 to destroy. Everything that exists gets imported; nothing gets recreated.GET per candidate for the types the inventory will not report. Slower, but correct.
Next in this series: making Terraform state loss survivable, and what happened when a bulk inventory API quietly refused to admit two resource types existed.
Posted Aug 6, 2026
Implemented multi-tenant infrastructure using Terraform with critical design decisions.
0
0