|
- terraform {
- required_version = "~> 0.12.21"
- required_providers {
- azurerm = "~> 1.44"
- }
- }
-
- resource "azurerm_virtual_network" "azvnet" {
- count = length(var.vnets)
-
- name = var.vnets[count.index].name
- resource_group_name = var.vnets[count.index].resource_group_name
- address_space = var.vnets[count.index].address_space
- location = var.vnets[count.index].location
- dns_servers = var.vnets[count.index].dns_servers
- tags = var.vnets[count.index].tags
-
- dynamic "subnet" {
- for_each = var.vnets[count.index].subnets
- content {
- name = subnet.key
- address_prefix = subnet.value.address_prefix
- security_group = try(data.azurerm_network_security_group.nsg[subnet.value.nsg.name].id, null)
- }
- }
-
- /* ddos_protection_plan {
- id = azurerm_ddos_protection_plan.example.id
- enable = true
- }*/
- depends_on = [var.azvnet_depends_on]
- }
-
- locals {
- nsgs = distinct(flatten([
- for vnet in var.vnets : [
- for subkey, subnet in vnet.subnets : {
- name = subnet.nsg.name
- resource_group_name = try(subnet.nsg.resource_group_name, vnet.resource_group_name)
- }
- ]
- ]))
- }
-
- data "azurerm_network_security_group" "nsg" {
- for_each = {for nsg in local.nsgs: nsg.name => nsg}
-
- name = each.value.name
- resource_group_name = each.value.resource_group_name
- depends_on = [var.azvnet_depends_on]
- }
|