我有一个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
输出显示预期的compute_address状态地址:
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资源的远程存储桶状态,与实际情况一致。知道我哪里做错了吗?
-
为主资源gce导入缺失的依赖项compute_address到state,使用:
terraform import -var "env=dev"var"primary_cluster_suffix = 1,module.gke-proxy-primary.google_compute_address。gke_proxy1汇丰- 10723777 -安全- dev/europe-west2 gke-proxy1
-
验证资源是否处于本地状态:
terraform state show module.gke-proxy-primary.google_compute_address.gke_proxy1现在应该显示
-
运行计划,并应按预期协调。