【发布时间】:2021-04-05 11:12:45
【问题描述】:
我使用 Terraform 模块创建了一些实例:
resource "google_compute_instance" "cluster" {
count = var.num_instances
name = "redis-${format("%03d", count.index)}"
...
attached_disk {
source =
google_compute_disk.ssd[count.index].name
}
}
resource "google_compute_disk" "ssd" {
count = var.num_instances
name = "redis-ssd-${format("%03d", count.index)}"
...
zone = data.google_compute_zones.available.names[count.index % length(data.google_compute_zones.available.names)]
}
resource "google_dns_record_set" "dns" {
count = var.num_instances
name = "${var.dns_name}-${format("%03d",
count.index +)}.something.com"
...
managed_zone = XXX
rrdatas = [google_compute_instance.cluster[count.index].network_interface.0.network_ip]
}
module "test" {
source = "/modules_folder"
num_instances = 2
...
}
如何销毁其中一个实例及其依赖项,例如 instance[1]+ssd[1]+dns[1]?我尝试使用
只销毁一个模块terraform destroy -target module.test.google_compute_instance.cluster[1]
但它不会破坏 ssd[1] 并且它试图破坏两个 dns:
module.test.google_dns_record_set.dns[0] module.test.google_dns_record_set.dns[1]
如果我跑
terraform destroy -target module.test.google_compute_disk.ssd[1]
它试图破坏实例和 dns:
module.test.google_compute_instance.cluster[0] module.test.google_compute_instance.cluster[1]
module.test.google_dns_record_set.dns[0]
module.test.google_dns_record_set.dns[1]
也是。
如何只销毁instance[1]、ssd[1]和dns[1]?我觉得我的代码可能有一些错误,也许 count.index 有一些问题会触发一些意外的破坏?
我使用:Terraform v0.12.29
【问题讨论】:
-
在尝试销毁之前
terraform state list的输出将是说明性的。 -
如果要销毁模块的资源,为什么不针对模块呢?
-
@MattSchuchard:我确实瞄准了。在帖子中查看我的命令:terraform destroy -target module.test.google_compute_instance.cluster[1]