Multiple Environments Example
Two ways to handle dev/staging/prod:
One project, multiple envs (tfvars + configurations)
Use one infrastructure project and switch envs with --configuration=dev or --configuration=prod. You add tfvars and a configurations block in project.json so each configuration uses the right var file.
→ Tutorial 3: Multiple environments with tfvars
That tutorial shows:
- Adding
tfvars/dev.tfvarsandtfvars/prod.tfvars - Adding
terraform-plan(andterraform-destroy)options.argswith-var-fileandconfigurations.dev/configurations.prodinproject.json - Running
nx run terraform-infra:terraform-plan --configuration=prodand apply
Separate project per environment
Use one Nx project per environment (e.g. dev-infra, prod-infra) with separate state and nx run dev-infra:... / nx run prod-infra:....
Quick version:
nx g nx-terraform:terraform-module dev-infra --backendProject=terraform-setup
nx g nx-terraform:terraform-module prod-infra --backendProject=terraform-setup
# Add variables/tfvars in each, then:
nx run dev-infra:terraform-apply
nx run prod-infra:terraform-apply
For patterns and using args with -var-file, see the Configuration guide.