Search code examples
azureterraformazure-rm

Terraform on Azure - Deploy multiple subnet


I'm trying to implement a Terraform script to create multiple subnets.

resource "azurerm_subnet" "test_subnet" {
    name = "testSUBNET"
    resource_group_name = "${local.resource_group_name}"
    virtual_network_name = "${azurerm_virtual_network.lab_vnet.name}"
    address_prefix = "10.0.1.0/24"
}

Is there a way to do a for-each or a loop on a variable in order to create them at the same time?


Solution

  • You can achieve this using a variable and count index as follows:

    variable "subnet_prefix" {
      type = "list"
      default = [
        {
          ip      = "10.0.1.0/24"
          name     = "subnet-1"
        },
        {
          ip      = "10.0.2.0/24"
          name     = "subnet-2"
        }
       ]
    }
    
    resource "azurerm_subnet" "test_subnet" {
        name = "${lookup(element(var.subnet_prefix, count.index), "name")}"
        count = "${length(var.subnet_prefix)}"
        resource_group_name = "${local.resource_group_name}"
        virtual_network_name = "${azurerm_virtual_network.lab_vnet.name}"
        address_prefix = "${lookup(element(var.subnet_prefix, count.index), "ip")}"
    }
    

    There is also preview feature available for-each in the new version