Skip to content

NAT gateway provisioning

NAT gateway implemented currently on middle subnet type. virtual_network.tf contains the NAT at this terraform code, we have one static public ip for NAT gateway created on natgw_public_ip resource block which is later associated on azurerm_nat_gateway_public_ip_association resourc block.

terraform resource block contains

resource "azurerm_public_ip" "natgw_public_ip" {
  name                = "natgw-pip-${var.tags.environment}-${var.common_tags.region}-001"
  resource_group_name = azurerm_resource_group.main.name
  location            = azurerm_resource_group.main.location
  allocation_method   = "Static"
  sku                 = "Standard"
}

resource "azurerm_nat_gateway" "natgw" {
  name                = "natgw-${var.tags.environment}-${var.common_tags.region}-001"
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name
  sku_name            = "Standard"
}

resource "azurerm_nat_gateway_public_ip_association" "natgw_pip" {
  nat_gateway_id       = azurerm_nat_gateway.natgw.id
  public_ip_address_id = azurerm_public_ip.natgw_public_ip.id
}

resource "azurerm_subnet_nat_gateway_association" "natgw_middle_001" {
  count          = length(data.azurerm_subnet.middle_subnets001)
  subnet_id      = data.azurerm_subnet.middle_subnets001[count.index].id
  nat_gateway_id = azurerm_nat_gateway.natgw.id
}