当我尝试使用多级地图时,我在"terraform plan“上遇到了错误。我无法使用google_compute_instance模块中的地图。我的目标是使用单个google_compute_instance模块启动多个具有不同属性的VM。我请求您帮助我纠正我的main.tf或建议我实现我的目标
Variable.tf
variable "instance_config" {
type = list(map(string))
default = []
}.tfvars
instance_config = {
test-vm1 = {
instance_name = "test-vm1"
instance_image = "debian-cloud/debian-8"
instance_type = "n1-standard-4"
},
test-vm2 = {
instance_name = "test-vm2"
instance_image = "debian-cloud/debian-9"
instance_type = "f1-micro"
}
}main.tf
resource "google_compute_instance" "vm_instance" {
{ for instance_name, instance_type, instance_image in var.instance_config :
name = instance_config.instance_name
machine_type = instance_config.instance_type
tags = var.instance_tags
boot_disk {
initialize_params {
image = instance_config.instance_image
}
}
}
network_interface {
network = "${var.gcp_network}"
}
}发布于 2021-05-13 13:23:37
您的for_each语法不正确,并且您的instance_config格式错误。它应该是:
variable "instance_config" {
type = map(object({
instance_name = string
instance_image = string
instance_type = string
}))
default = {
test-vm1 = {
instance_name = "test-vm1"
instance_image = "debian-cloud/debian-8"
instance_type = "n1-standard-4"
},
test-vm2 = {
instance_name = "test-vm2"
instance_image = "debian-cloud/debian-9"
instance_type = "f1-micro"
}
}
}
resource "google_compute_instance" "vm_instance" {
for_each = var.instance_config
name = each.value.instance_name
machine_type = each.value.instance_type
tags = var.instance_tags
boot_disk {
initialize_params {
image = each.value.instance_image
}
}
network_interface {
network = var.gcp_network
}
}https://stackoverflow.com/questions/67514190
复制相似问题