我使用以下模块创建了一个 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 远程存储桶状态。 知道我做错了什么吗?
答案 0 :(得分:0)
使用以下方法将缺少的依赖计算地址导入主资源 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
然后验证资源是否处于本地状态:
terraform state show module.gke-proxy-primary.google_compute_address.gke_proxy1 现在应该可以显示了。
运行计划,它应该按预期进行协调。