1

我在 GCP 上使用 TF 0.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)。init 和 apply 运行良好,没有错误。所以我想知道......我的状态文件在哪里?

有没有办法追踪这个?

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

4

2 回答 2

1

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

如果您想在 GCP 存储桶中存储状态文件 - 您需要声明一个“terraform”块,请参阅文档

terraform {
  backend "gcs" {
    bucket  = "tf-state-prod"
    prefix  = "terraform/state"
  }
}

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

于 2019-05-10T00:59:47.250 回答
0

创建 abackend.tfvars不会创建后端配置。而且,它甚至不会自动加载。稍后再谈。

要创建 GCS 远程后端配置,您应该遵循Terraform GCS 后端文档

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"
  }
}

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

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

至于backend.tfvars,*.tfvars不会自动加载(terraform.tfvarsor除外*.auto.tfvars)。请参阅输入变量文档。如果你想加载backend.tfvars你应该使用的文件-var-file=backend.tfvars。您还必须从后端配置中引用这些变量。请参阅此示例

于 2019-05-10T01:59:46.233 回答