I have multiple projects on Hetzner Cloud (testing, production). I use the same code to create the services in these projects. Consider I want to create a load balancer in testing project, I will get a .tfplan
file. But the problem is that if I do the same for the production project my code will just replace the previous .tfplan
file.
Now I can create multiple plan files and save them in the respective directories, but I don't want that and I can only create multiple .tfstate
for each project. So my question, is there any way to destroy the infrastructure using the state files.
I have followed these steps but no success so far.
- Get the state file for loadbalancer (
lb.tfstate
). - Run
terraform plan -destroy -state=lb.tfstate -out lb.tfplan
. - Run
terraform apply -destroy lb.tfplan
.
You can use providers for your terraform states, like s3: https://medium.com/all-things-devops/how-to-store-terraform-state-on-s3-be9cd0070590
Setting custom names / locations for .tfstate files is a bit weird. I've been using terraform since wham and never seen anyone do this.
Commonly you have one terraform directory per project, something like:
and so on. terraform will automatically create state files in these directories.
Ideally you want
~/code/customer/project
(or alike) to be a git repository.If you want to use the same
main.tf
file in stag and prod I'd just use a symlink:But messing with the state files is a big no-no. I'd recommend not to do that.