尝试协调/刷新地形基础设施漂移

时间:2021-01-25 19:22:27

标签: google-cloud-platform terraform google-compute-engine

我使用以下模块创建了一个 Terraform GCE 资源:

resource "google_compute_address" "gke_proxy1" {
  ...
}

resource "google_compute_disk" "gke_proxy1" {
  ...
}

resource "google_compute_instance" "gke_proxy1" {
  ...
}

但是,在某些时候,在 Terraform 脚本之外,已经为特定 GCE 创建了 google_compute_address,因此当我尝试应用 TF 脚本时,它会尝试创建不是我想要的计算地址。 例如使用:

terraform plan -var "env=dev" -target module.gke-proxy-primary;

如果我运行以下命令来显示真实世界的状态:

 terraform state show module.gke-proxy-primary.google_compute_instance.gke_proxy1

输出显示预期的计算地址状态地址:

network_interface {                                                                                                                                                             
     name               = "nic0"                                                                                                                                                 
     ...                                                                                                             
 }                                                                                                                                                                               
 network_interface {                                                                                                                                                             
     name               = "nic1"                                                                                                                                                 
     ...                                                                                                             
 }            

                                                                                                                                                               

所以我想我需要从现实世界的基础设施重建 TF 状态,所以我尝试了以下方法,因为状态和现实世界之间存在偏差: 运行:

terraform refresh -var "env=dev" -target module.gke-proxy-primary;

给我:

module.gke-proxy-primary.google_compute_disk.gke_proxy1: Refreshing state... [id=projects/proj1/zones/europe-west2-a/disks/gke-proxy1]
module.gke-proxy-primary.google_compute_instance.gke_proxy1: Refreshing state... [id=projects/proj1/zones/europe-west2-a/instances/gke-proxy1]

因此它不会像现实世界中预期的那样刷新资源的 compute_address.gke_proxy1 远程存储桶状态。 知道我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

  1. 使用以下方法将缺少的依赖计算地址导入主资源 gce 的状态:

    terraform import -var "env=dev" -var "primary_cluster_suffix=1" module.gke-proxy-primary.google_compute_address.gke_proxy1 hsbc-10723777-safe-dev/europe-west2/gke-proxy1

  2. 然后验证资源是否处于本地状态:

    terraform state show module.gke-proxy-primary.google_compute_address.gke_proxy1 现在应该可以显示了。

  3. 运行计划,它应该按预期进行协调。