modules/vnet/vnet.tf (149 lines of code) (raw):
# Hub VNET
resource "azurerm_virtual_network" "hub" {
name = "vnet-hub"
address_space = var.hub_address_space
location = var.location
resource_group_name = var.resource_group_name
tags = var.tags
}
# Firewall subnet
resource "azurerm_subnet" "firewall" {
name = "AzureFirewallSubnet"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.hub.name
address_prefixes = var.firewall_address_prefixes
}
# DNS subnet
resource "azurerm_subnet" "dns" {
name = "dns"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.hub.name
address_prefixes = var.dns_address_prefixes
delegation {
name = "acidelegationservice"
service_delegation {
name = "Microsoft.ContainerInstance/containerGroups"
actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
}
}
}
resource "azurerm_subnet" "bastion" {
name = "AzureBastionSubnet"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.hub.name
address_prefixes = var.bastion_address_prefixes
}
resource "azurerm_subnet" "hub_jumpbox" {
name = "jumpbox"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.hub.name
address_prefixes = var.hub_jumpbox_address_prefixes
}
resource "azurerm_subnet" "vnet_gateway" {
name = "GatewaySubnet"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.hub.name
address_prefixes = var.vnet_gateway_address_prefixes
}
# Create spoke
resource "azurerm_virtual_network" "spoke" {
name = "vnet-spoke"
address_space = var.spoke_address_space
location = var.location
resource_group_name = var.resource_group_name
dns_servers = [cidrhost(azurerm_subnet.dns.address_prefixes[0], 4)]
tags = var.tags
}
# Create the Subnet for Application Gateway
resource "azurerm_subnet" "gateway" {
name = "gateway"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.spoke.name
address_prefixes = var.gateway_address_prefixes
}
# Create the Subnet for VNET Integration
resource "azurerm_subnet" "vnet_integration" {
name = "appservices"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.spoke.name
address_prefixes = var.vnet_integration_address_prefixes
private_link_service_network_policies_enabled = false
# Delegate the subnet to "Microsoft.Web/serverFarms"
delegation {
name = "acctestdelegation"
service_delegation {
name = "Microsoft.Web/serverFarms"
actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
}
}
}
# Create the Subnet for Private Endpoints
resource "azurerm_subnet" "privateendpoints" {
name = "privateendpoints"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.spoke.name
address_prefixes = var.privateendpoints_address_prefixes
private_link_service_network_policies_enabled = var.enable_network_policy_for_private_endpoints
}
# Create the Subnet for Private Endpoints
resource "azurerm_subnet" "jumpbox" {
name = "jumpbox"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.spoke.name
address_prefixes = var.jumpbox_address_prefixes
private_link_service_network_policies_enabled = false
}
# Create the Subnet for Flexible Server
resource "azurerm_subnet" "flexible_server" {
name = "flexible-server"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.spoke.name
address_prefixes = var.flexible_server_address_prefixes
private_link_service_network_policies_enabled = false
service_endpoints = [
"Microsoft.Storage"
]
# Delegate the subnet to "Microsoft.DBforPostgreSQL/flexibleServers"
delegation {
name = "flexibleserver"
service_delegation {
name = "Microsoft.DBforPostgreSQL/flexibleServers"
actions = [
"Microsoft.Network/virtualNetworks/subnets/join/action",
]
}
}
}
# Create the Subnet for APIM
resource "azurerm_subnet" "apim" {
name = "apim"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.spoke.name
address_prefixes = var.apim_address_prefixes
delegation {
name = "apim-delegation"
service_delegation {
name = "Microsoft.Web/serverFarms"
actions = [
"Microsoft.Network/virtualNetworks/subnets/action",
]
}
}
}
# Create on-premises
resource "azurerm_virtual_network" "contoso" {
name = "vnet-contoso"
address_space = var.contoso_address_space
location = var.location
resource_group_name = var.resource_group_name
dns_servers = [cidrhost(azurerm_subnet.dns.address_prefixes[0], 4)]
tags = var.tags
}
# Create the Corp subnet
resource "azurerm_subnet" "contoso" {
name = "contoso-corp"
virtual_network_name = azurerm_virtual_network.contoso.name
resource_group_name = var.resource_group_name
address_prefixes = var.contoso_address_prefixes
private_link_service_network_policies_enabled = false
}
resource "azurerm_subnet" "contoso_tests" {
name = "contoso-corp-tests"
resource_group_name = var.resource_group_name
virtual_network_name = azurerm_virtual_network.contoso.name
address_prefixes = var.contoso_tests_address_prefixes
service_endpoints = ["Microsoft.Storage"]
delegation {
name = "acidelegationservice"
service_delegation {
name = "Microsoft.ContainerInstance/containerGroups"
actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
}
}
}