I've managed around seven environments using Terraform, keeping each in its own directory and state file, while pulling in common modules. Recently, I've taken on another project that has about seven to eight environments, but they use workspaces. Both approaches come with their pros and cons: my previous method results in duplication of files, while workspaces have a shared state file. I've started looking into Terragrunt as another option. I'm seeking practical experiences from others in managing environments at scale and would love to hear about the tools or practices that have made things easier for you.
3 Answers
I personally think Terraform workspaces are pretty handy. They do what they're supposed to well. The only time I might avoid them is when environments are similar but not identical. For instance, if your company manages infrastructure for others, and each client has unique needs—it can lead to a whole lot of conditionals, which often ends in chaos.
Using vanilla Terraform can get tricky as you have to manually manage the relationships between the states, which works fine for a few environments but can quickly spiral out of control as you scale. I've found that both Terragrunt and Terramate can help streamline this; Terragrunt provides a nice way to orchestrate split state projects, while Terramate can simplify it through code generation.
Terragrunt's `run-all` feature and the DRY (Don't Repeat Yourself) root configs are fantastic. But I believe the biggest benefit is that each environment gets its own state file. Using workspaces can be risky since they share state, and it's easy to mistakenly target the wrong environment, like production instead of staging.

Related Questions
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically