Terraform 想要重新创建导入的资源

Terraform wants to recreate imported resources

本地我:

  1. 已创建main.tf
  2. 使用“terraform init”进行初始化
  3. 导入 GCP 项目和 Google 运行 服务
  4. 已更新 main.tf 因此“terraform plan”没有尝试做任何事情。
  5. 已检查 main.tf 到 GitHub

我这样设置 GitHub 操作:

  1. 结帐
  2. 设置 Gcloud
  3. 使用“terraform init”进行初始化
  4. 使用“地形规划”进行规划

Terraform 计划正在尝试重建一切。

如何让它检测现有资源?

默认情况下,Terraform 将初始化本地状态。此状态的问题在于它仅在您的 PC 上对您可用。如果你在别处执行一个计划,这个状态就会丢失。为了解决这个问题,您需要为 Terraform 设置一个远程后端,以便能够将状态文件存储在一个集中的位置。

如果您使用的是 Google Cloud,则可以使用 Cloud Store 存储桶来存储状态文件。 Terraform 提供 gcs 模块,以便能够使用 Cloud Store 配置此后端。您必须创建一个存储桶并将存储桶名称提供给 gcs 后端配置:

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