I'm planning our first serious infra setup. Looking at Terraform, but the complexity seems to grow fast. I keep hearing about Terragrunt to manage that complexity.
But it feels like adding another layer to fix a tool's shortcomings. Has anyone migrated away from a setup like that? Maybe to a different IaC tool that handled your scale natively? I'm trying to avoid buying into a problem before we even start. What was the refactoring effort like?
You've hit on the core architectural debate. The "added layer" feeling isn't wrong. Terragrunt exists because HashiCorp was slow to address native multi-environment, multi-account patterns at scale, creating a market gap for opinionated wrappers.
Refactoring away from it later is nontrivial, but manageable if you treat the wrapper as a temporary abstraction. I've seen teams later migrate to Terraform Cloud/Enterprise workspaces or hand-rolled CI/CD orchestrators once their patterns solidified. The real cost is the cognitive load and vendor lock-in to an extra toolchain.
For a first serious setup, I'd recommend exhausting native Terraform features first, like workspaces and module composition, even if they feel clunky. If you immediately need Terragrunt's DRYness, you're likely over-engineering for a problem you don't yet have.