Terraform 想要重新创建导入的资源
Terraform wants to recreate imported resources
本地我:
- 已创建main.tf
- 使用“terraform init”进行初始化
- 导入 GCP 项目和 Google 运行 服务
- 已更新 main.tf 因此“terraform plan”没有尝试做任何事情。
- 已检查 main.tf 到 GitHub
我这样设置 GitHub 操作:
- 结帐
- 设置 Gcloud
- 使用“terraform init”进行初始化
- 使用“地形规划”进行规划
Terraform 计划正在尝试重建一切。
如何让它检测现有资源?
默认情况下,Terraform 将初始化本地状态。此状态的问题在于它仅在您的 PC 上对您可用。如果你在别处执行一个计划,这个状态就会丢失。为了解决这个问题,您需要为 Terraform 设置一个远程后端,以便能够将状态文件存储在一个集中的位置。
如果您使用的是 Google Cloud,则可以使用 Cloud Store 存储桶来存储状态文件。 Terraform 提供 gcs
模块,以便能够使用 Cloud Store 配置此后端。您必须创建一个存储桶并将存储桶名称提供给 gcs
后端配置:
terraform {
backend "gcs" {
bucket = "tf-state-prod"
prefix = "terraform/state"
}
}
本地我:
- 已创建main.tf
- 使用“terraform init”进行初始化
- 导入 GCP 项目和 Google 运行 服务
- 已更新 main.tf 因此“terraform plan”没有尝试做任何事情。
- 已检查 main.tf 到 GitHub
我这样设置 GitHub 操作:
- 结帐
- 设置 Gcloud
- 使用“terraform init”进行初始化
- 使用“地形规划”进行规划
Terraform 计划正在尝试重建一切。
如何让它检测现有资源?
默认情况下,Terraform 将初始化本地状态。此状态的问题在于它仅在您的 PC 上对您可用。如果你在别处执行一个计划,这个状态就会丢失。为了解决这个问题,您需要为 Terraform 设置一个远程后端,以便能够将状态文件存储在一个集中的位置。
如果您使用的是 Google Cloud,则可以使用 Cloud Store 存储桶来存储状态文件。 Terraform 提供 gcs
模块,以便能够使用 Cloud Store 配置此后端。您必须创建一个存储桶并将存储桶名称提供给 gcs
后端配置:
terraform {
backend "gcs" {
bucket = "tf-state-prod"
prefix = "terraform/state"
}
}