Skip to content
This repository has been archived by the owner on Jun 13, 2023. It is now read-only.

Commit

Permalink
Merge pull request #6 from clouddrove/1.0.2
Browse files Browse the repository at this point in the history
add example for create specific subnet name
  • Loading branch information
d4kverma authored Dec 14, 2022
2 parents 04e95ad + 29873e6 commit db86862
Show file tree
Hide file tree
Showing 6 changed files with 170 additions and 2 deletions.
41 changes: 41 additions & 0 deletions _example/default_subnet/example.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
provider "azurerm" {
features {}
}

module "resource_group" {
source = "clouddrove/resource-group/azure"
version = "1.0.0"

name = "app"
environment = "test"
label_order = ["environment", "name", ]
location = "North Europe"
}

module "vnet" {
source = "../.."

name = "app"
environment = "test"
label_order = ["name", "environment"]
resource_group_name = module.resource_group.resource_group_name
location = module.resource_group.resource_group_location
address_space = "10.0.0.0/16"
enable_ddos_pp = false

#subnet
default_name_subnet = true
subnet_names = ["subnet1", "subnet2"]
subnet_prefixes = ["10.0.1.0/24", "10.0.2.0/24"]
disable_bgp_route_propagation = false

# routes
enabled_route_table = true
routes = [
{
name = "rt-test"
address_prefix = "0.0.0.0/0"
next_hop_type = "Internet"
}
]
}
24 changes: 24 additions & 0 deletions _example/default_subnet/output.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
output "vnet_id" {
description = "The id of the newly created vNet"
value = module.vnet.vnet_id
}

output "vnet_name" {
description = "The name of the newly created vNet"
value = module.vnet.vnet_name
}

output "vnet_location" {
description = "The location of the newly created vNet"
value = module.vnet.vnet_location
}

output "vnet_address_space" {
description = "The address space of the newly created vNet"
value = module.vnet.vnet_address_space
}

output "vnet_subnets" {
description = "The ids of subnets created inside the newly created vNet"
value = module.vnet.vnet_subnets
}
35 changes: 35 additions & 0 deletions _example/specific_name_subnet/example.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
provider "azurerm" {
features {}
}

module "resource_group" {
source = "clouddrove/resource-group/azure"
version = "1.0.0"

name = "app"
environment = "test"
label_order = ["environment", "name", ]
location = "North Europe"
}

module "vnet" {
source = "../.."

name = "app"
environment = "test"
label_order = ["name", "environment"]
resource_group_name = module.resource_group.resource_group_name
location = module.resource_group.resource_group_location
address_space = "10.0.0.0/16"
enable_ddos_pp = false

#subnet
specific_name_subnet = true
specific_subnet_names = "GatewaySubnet"
subnet_prefixes = ["10.0.1.0/24"]
disable_bgp_route_propagation = false

# routes
enabled_route_table = false

}
24 changes: 24 additions & 0 deletions _example/specific_name_subnet/output.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
output "vnet_id" {
description = "The id of the newly created vNet"
value = module.vnet.vnet_id
}

output "vnet_name" {
description = "The name of the newly created vNet"
value = module.vnet.vnet_name
}

output "vnet_location" {
description = "The location of the newly created vNet"
value = module.vnet.vnet_location
}

output "vnet_address_space" {
description = "The address space of the newly created vNet"
value = module.vnet.vnet_address_space
}

output "vnet_subnets" {
description = "The ids of subnets created inside the newly created vNet"
value = module.vnet.vnet_subnets
}
32 changes: 30 additions & 2 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ resource "azurerm_network_ddos_protection_plan" "example" {
}

resource "azurerm_subnet" "subnet" {
count = var.enable == true ? length(var.subnet_names) : 0
count = var.enable && var.default_name_subnet == true ? length(var.subnet_names) : 0
name = "${var.name}-${var.subnet_names[count.index]}"
resource_group_name = var.resource_group_name
address_prefixes = [var.subnet_prefixes[count.index]]
Expand All @@ -61,6 +61,28 @@ resource "azurerm_subnet" "subnet" {
}
}

resource "azurerm_subnet" "subnet2" {
count = var.enable && var.specific_name_subnet == true ? 1 : 0
name = var.specific_subnet_names
resource_group_name = var.resource_group_name
address_prefixes = [var.subnet_prefixes[count.index]]
virtual_network_name = join("", azurerm_virtual_network.vnet.*.name)
enforce_private_link_endpoint_network_policies = lookup(var.subnet_enforce_private_link_endpoint_network_policies, var.specific_subnet_names, false)
service_endpoints = lookup(var.subnet_service_endpoints, var.specific_subnet_names, [])
enforce_private_link_service_network_policies = var.subnet_enforce_private_link_service_network_policies

dynamic "delegation" {
for_each = var.private_delegation
content {
name = lookup(each.value.private_delegation, "name", null)
service_delegation {
name = lookup(each.value.private_delegation.service_delegation, "name", null)
actions = lookup(each.value.private_delegation.service_delegation, "actions", null)
}
}
}
}

resource "azurerm_route_table" "rt" {
count = var.enable && var.enabled_route_table ? 1 : 0
name = format("%s-route-table", module.labels.id)
Expand All @@ -80,7 +102,13 @@ resource "azurerm_route_table" "rt" {
}

resource "azurerm_subnet_route_table_association" "main" {
count = var.enable && var.enabled_route_table ? length(var.subnet_prefixes) : 0
count = var.enable && var.enabled_route_table && var.default_name_subnet ? length(var.subnet_prefixes) : 0
subnet_id = element(azurerm_subnet.subnet.*.id, count.index)
route_table_id = join("", azurerm_route_table.rt.*.id)
}

resource "azurerm_subnet_route_table_association" "main2" {
count = var.enable && var.enabled_route_table && var.specific_name_subnet ? length(var.subnet_prefixes) : 0
subnet_id = element(azurerm_subnet.subnet2.*.id, count.index)
route_table_id = join("", azurerm_route_table.rt.*.id)
}
16 changes: 16 additions & 0 deletions variable.tf
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,19 @@ variable "disable_bgp_route_propagation" {
default = true
description = "Boolean flag which controls propagation of routes learned by BGP on that route table."
}

variable "default_name_subnet" {
type = bool
default = false
}

variable "specific_name_subnet" {
type = bool
default = false
}

variable "specific_subnet_names" {
type = string
default = ""
description = "A list of public subnets inside the vNet."
}

0 comments on commit db86862

Please sign in to comment.