我是terraform的新手,正在尝试为多个vm和多个区域内的多个子网创建一个模块。
我有两个区域,在每个区域中我有3个子网,在每个子网中我创建2个vm。
我可以使用该模块在2个区域内创建多个子网,但在创建的多个子网中创建多个vm需要帮助。你知道怎么做吗?
以下是我的主.tf和地形.tfvars 代码
地形.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 = ""
}
},
main.tf
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
}
这可能适用于
在terraform.tfvars中编辑vm,添加所需子网的名称
地形.tfvars
...
# vms
vm = {
"vm1" = {
name = "vm1"
size = ""
admin_username = ""
zone = ""
subnet = "subnet1" ### require subnet
vtpm_enabled = true
nic = {
name = ""
ip_name = ""
private_ip_address = ""
}
},
"vm2" = {
name = "vm2"
size = ""
admin_username = ""
zone = ""
subnet = "subnet2" ### require subnet
vtpm_enabled = true
nic = {
name = ""
ip_name = ""
private_ip_address = ""
}
},
在你的main.tf中添加一个条件;当地人";
main.tf
locals {
subnet1 = module.Subnet["Subnet1"].subnet_id
subnet2 = module.Subnet["Subnet2"].subnet_id
subnet3 = module.Subnet["Subnet3"].subnet_id
}
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 = "${each.value.subnet}" == "subnet1" ? "${local.subnet1}" : "${each.value.subnet}" == "subnet2" ? "${local.subnet2}" : "${each.value.subnet}" == "subnet3" ? "${local.subnet3}" :""
# Virtual Machine
vm = each.value
vm_shared = var.tfvars.vm_shared
vm_pwd = var.vm_pwd
}
希望这能有所帮助!