Terraform 有没有办法跟踪我的状态文件被放置/引用的位置?

Terraform 有没有办法跟踪我的状态文件被放置/引用的位置?,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,我在GCP上使用TF0.11.11。我已将backend.tfvars文件设置为按状态文件存储在GCP存储桶中: # bucket where terraform state file will be kept bucket = "this-is-my-tf-bucket" # folder in the bucket where the terraform state file will be kept prefix = "bucket.folder.sbx" credentials =

我在GCP上使用TF0.11.11。我已将backend.tfvars文件设置为按状态文件存储在GCP存储桶中:

# bucket where terraform state file will be kept
bucket = "this-is-my-tf-bucket"

# folder in the bucket where the terraform state file will be kept
prefix = "bucket.folder.sbx"

credentials = "greg-cred.json"
但是,在运行init并应用之后,我注意到该文件夹(bucket.folder.sbx)不存在于我的bucket中。init和apply运行良好,没有错误。所以我想知道…我的州档案要去哪里

有没有办法追踪这个


第二个问题是,我的本地“terraform.tfstate”文件似乎没有放在我的.terraform目录中,而是放在根目录中。我想知道为什么会这样?如何控制本地terraform.tfstate文件的放置位置?

项目的根目录中应该有terraform.tfstate。 根据Terrafor架构,在文件夹中。terraform应该安装模块和提供程序,而不是状态文件

如果要在GCP bucket中存储状态文件,则需要声明“地形”块,请参阅:


所以,如果您在本地看到terraform.tfstate,它肯定不在云中。Terraform仅在本地或远程存储桶(使用上述配置)中创建一个状态文件。

创建
后端。tfvars
不会创建后端配置。此外,它甚至不是自动加载的。稍后再谈

要创建GCS远程后端配置,应遵循以下步骤:

如果不提供后端配置,则会获得默认的本地后端,并根据状态文件路径:

默认情况下,相对于根模块,默认为“terraform.tfstate”


对于
后端.tfvars
*.tfvars
不会自动加载(除了
terraform.tfvars
*.auto.tfvars
)。看。如果要加载
backend.tfvars
文件,应使用
-var file=backend.tfvars
。您还必须从后端配置中引用这些变量。看到这一点。

如果云后端指示,Terraform似乎会在本地和云中存储状态。
terraform {
  backend "gcs" {
    bucket  = "tf-state-prod"
    prefix  = "terraform/state"
  }
}
terraform {
  backend "gcs" {
    # bucket where terraform state file will be kept
    bucket = "this-is-my-tf-bucket"
    # folder in the bucket where the terraform state file will be kept
    prefix = "bucket.folder.sbx"
    credentials = "greg-cred.json"
  }
}