We're migrating our Terraform setup for our RevOps platform. Current state is a monolith: CRM sync modules, data pipeline configs, and monitoring all in one massive `main.tf` with a single remote state.
Goal: Split into separate state files per functional area (e.g., `crm/`, `data-pipe/`, `monitoring/`). Heard `moved` blocks are the way to do this without destroy/create cycles.
Our constraints:
* Zero downtime for integrations.
* Existing resources must keep their AWS/GCP IDs.
* Team needs to be able to work on CRM modules independently of data-pipe changes.
Has anyone done this specifically for a RevOps/IaaS environment?
Main questions:
* Did you use `moved` blocks for the entire split, or was `terraform state mv` still necessary?
* How did you handle shared resources (like a central VPC) that multiple modules now need to reference?
* Any pitfalls with provider configurations across the new decomposed states?
Looking for concrete steps, not theory. What actually worked?
null