【发布时间】:2022-09-28 20:39:03
【问题描述】:
我是 terraform 的新手,正在尝试为多个虚拟机和多个区域内的多个子网创建一个模块。
我有 2 个区域,在每个区域中我有 3 个子网,并且在每个子网中我正在创建 2 个虚拟机。
我可以使用该模块在 2 个区域内创建多个子网,但在创建的这些多个子网中创建多个虚拟机时我需要帮助。你知道怎么做吗?
下面是我的 main.tf 和 terraform.tfvars 的代码
terraform.tfvars
# subnets
subnet = {
\"Subnet1\" = {
name = \"subnet1\"
address_prefixes = [\"\"]
enforce_private_link_endpoint_network_policies =
},
\"Subnet2\" = {
name = \"subnet2\"
address_prefixes = [\"\"]
enforce_private_link_endpoint_network_policies =
},
\"Subnet3\" = {
name = \"subnet3\"
address_prefixes = [\"\"]
enforce_private_link_endpoint_network_policies =
},
}
# vms
vm = {
\"vm1\" = {
name = \"vm1\"
size = \"\"
admin_username = \"\"
zone = \"\"
vtpm_enabled = true
nic = {
name = \"\"
ip_name = \"\"
private_ip_address = \"\"
}
},
\"vm2\" = {
name = \"vm2\"
size = \"\"
admin_username = \"\"
zone = \"\"
vtpm_enabled = true
nic = {
name = \"\"
ip_name = \"\"
private_ip_address = \"\"
}
},
主文件
module \"subnet\" {
source = \"./../modules/subnet\"
depends_on = [module.vnet]
for_each = var.region.subnet
# Resource group
network_rg_name = var.region.network_rg_name
location = var.region.location
# Route table
route_table_id = module.route_table.route_table_id
# Network
subnet = each.value
vnet = var.region.vnet
}
module \"vm\" {
source = \"./../modules/vm\"
for_each = var.region.vm
# Resource group
vm_rg_name = var.region.vm_rg_name
location = var.region.location
# Subnets
vm_subnet_id = module.subnet[\"Subnet1\"].subnet_id
# Virtual Machine
vm = each.value
vm_shared = var.tfvars.vm_shared
vm_pwd = var.vm_pwd
}
-
什么\'不适用于您当前的解决方案?
-
@DanielMann 如何将每个 subnet_id 值分配给 vm?目前我只为 Subnet1 做
-
答案可能比你想的要复杂。我建议每个人都做每件事,然后研究如何实现你想要的。提示:您不能在
for_each中使用不同的变量并期望映射工作。
标签: azure terraform terraform-provider-azure