Dennis
Dennis

Reputation: 199

Change location of .terraform and terraform.tfstate directory when starting Terraform with path to main.tf file

When I start Terraform with terraform apply ../myEnvironment/ it successfully takes the main.tf file in ../myEnvironment/main.tf and creates a terraform.tfstate and a .terraform directory, but at the same time it creates a .terraform directory including a terraform.tfstate in the directory from where the Terraform command was executed.

Is there a way to say Terraform only create files and .terraform directory in the directory, where the main.tf file is located? so when executing terraform apply ../myEnvironment/ only create files in ../myEnvironment/main.tf?

I already included

terraform {
  backend "local" {
    path = "../myEnvironment/terraform.tfstate"
   }
}

in my main.tf

Upvotes: 4

Views: 8897

Answers (1)

Dennis
Dennis

Reputation: 199

So I found the solution.

As mentioned here you need to create the environment variable before starting Terraform:

TF_DATA_DIR=../myEnvironment/.terraform terraform init ../myEnvironment/
TF_DATA_DIR=../myEnvironment/.terraform terraform apply ../myEnvironment/

An answer mentioned in the documentation here specified the terraform.tfstate location in the main.tf file(s):

terraform {
  backend "local" { path = "../myEnvironment/terraform.tfstate" }
}

This way you are independent as to where you execute Terraform to do its magic. :)

Maybe it will help someone to save some time.

Upvotes: 10

Related Questions