有没有办法追踪我的状态文件 placed/referenced?
Is there a way to trace where my state file is being placed/referenced?
我在 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"
但是,在我 运行 我的初始化和应用之后,我注意到我的存储桶中不存在该文件夹 (bucket.folder.sbx)。 init 和 apply 运行 很好,没有错误。所以我想知道...我的状态文件去哪里了?
有办法追踪吗?
作为次要问题,我的本地 "terraform.tfstate" 文件似乎没有放在我的 .terraform 目录中,而是放在根目录中。我想知道这是为什么?如何控制本地 terraform.tfstate 文件的放置位置?
预计在项目的根目录中有terraform.tfstate。
根据 Terrafor 体系结构,.terraform 文件夹中应安装模块和提供程序,而不是状态文件。
如果您想在 GCP 存储桶中存储状态文件 - 您需要声明一个 "terraform" 块,请参阅 documentation:
terraform {
backend "gcs" {
bucket = "tf-state-prod"
prefix = "terraform/state"
}
}
因此,如果您在本地看到 terraform.tfstate - 它肯定不在云中。 Terraform 仅在本地或远程存储桶(使用上述配置)中创建一个状态文件。
创建 backend.tfvars
不会创建后端配置。更重要的是,它甚至不会自动加载。稍后会详细介绍。
要创建 GCS 远程后端配置,您应该遵循 Terraform GCS backend documentation:
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"
}
}
如果不提供后端配置,则获取默认本地后端并根据default backend documentation状态文件路径:
defaults to "terraform.tfstate" relative to the root module by default.
至于backend.tfvars
,*.tfvars
不会自动加载(terraform.tfvars
或*.auto.tfvars
除外)。参见 input variables documentation. If you want to load the the backend.tfvars
file you should use -var-file=backend.tfvars
. You must also reference these variables from your backend configuration. See this example.
我在 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"
但是,在我 运行 我的初始化和应用之后,我注意到我的存储桶中不存在该文件夹 (bucket.folder.sbx)。 init 和 apply 运行 很好,没有错误。所以我想知道...我的状态文件去哪里了?
有办法追踪吗?
作为次要问题,我的本地 "terraform.tfstate" 文件似乎没有放在我的 .terraform 目录中,而是放在根目录中。我想知道这是为什么?如何控制本地 terraform.tfstate 文件的放置位置?
预计在项目的根目录中有terraform.tfstate。 根据 Terrafor 体系结构,.terraform 文件夹中应安装模块和提供程序,而不是状态文件。
如果您想在 GCP 存储桶中存储状态文件 - 您需要声明一个 "terraform" 块,请参阅 documentation:
terraform {
backend "gcs" {
bucket = "tf-state-prod"
prefix = "terraform/state"
}
}
因此,如果您在本地看到 terraform.tfstate - 它肯定不在云中。 Terraform 仅在本地或远程存储桶(使用上述配置)中创建一个状态文件。
创建 backend.tfvars
不会创建后端配置。更重要的是,它甚至不会自动加载。稍后会详细介绍。
要创建 GCS 远程后端配置,您应该遵循 Terraform GCS backend documentation:
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"
}
}
如果不提供后端配置,则获取默认本地后端并根据default backend documentation状态文件路径:
defaults to "terraform.tfstate" relative to the root module by default.
至于backend.tfvars
,*.tfvars
不会自动加载(terraform.tfvars
或*.auto.tfvars
除外)。参见 input variables documentation. If you want to load the the backend.tfvars
file you should use -var-file=backend.tfvars
. You must also reference these variables from your backend configuration. See this example.