我正在嘗試從google_compute_instance資源中的 for_each 陳述句訪問所有值
我想獲取屬性values [dev-1, dev-2]中的所有name內容并將其決議為vm_name我的metadata_startup_script
resource "google_compute_instance" "compute_instance" {
project = var.project_id
for_each = toset(["1", "2"])
name = "dev-${each.key}"
machine_type = "e2-micro"
zone = "${var.region}-b"
boot_disk {
initialize_params {
image = "ubuntu-os-cloud/ubuntu-1804-lts"
}
}
network_interface {
network = "default"
access_config {
}
}
lifecycle {
ignore_changes = [attached_disk]
}
metadata_startup_script = templatefile("copy.tftpl", {
vm_name = "${google_compute_instance.compute_instance.0.name}"
nfs_ip = "${google_filestore_instance.instance.networks[0].ip_addresses[0]}"
file_share_name = "${google_filestore_instance.instance.file_shares[0].name}"
zone = "${var.region}-b"
})
}
我無法從name引數中獲取所有計算實體
我收到此錯誤訊息
?
│ Error: Cycle: google_compute_instance.compute_instance["2"], google_compute_instance.compute_instance["1"]
│
│
如何解決此問題,以便獲取所有虛擬機名稱并將其決議為vm_name變數?
uj5u.com熱心網友回復:
我會將您的硬編碼元素更改for_each為一個變數,
并將其傳遞給您的 vm_name,如下所示:
locals {
compute_names = ["dev-1", "dev-2"]
}
resource "google_compute_instance" "compute_instance" {
project = var.project_id
for_each = toset(local.compute_names)
name = each.key
machine_type = "e2-micro"
zone = "${var.region}-b"
...
metadata_startup_script = templatefile("copy.tftpl", {
vm_name = local.compute_names
...
zone = "${var.region}-b"
})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/486730.html
