locals {
#The below locals convert an IP address range into separate elements. Take 10.0.2.0/24 for example:
first_octet = var.create_reverse_dns_zone == true && var.address_range != null ? element(split(".", element(var.address_range, 0)), 0) : null
# Gets the first octet of range, so for example, 10
second_octet = var.create_reverse_dns_zone == true && var.address_range != null ? element(split(".", element(var.address_range, 0)), 1) : null
# Gets the second octet of range, so for example, 0
third_octet = var.create_reverse_dns_zone == true && var.address_range != null ? element(split(".", element(var.address_range, 0)), 2) : null
# Gets the third octet of range, so for example, 2
fourth_element = var.create_reverse_dns_zone == true && var.address_range != null ? element(split(".", element(var.address_range, 0)), 3) : null
# Gets the forth element of range, so for example, 0/24
fourth_octet = var.create_reverse_dns_zone == true && var.address_range != null && local.fourth_element != null ? element(split("/", local.fourth_element), 0) : null
# Gets the fourth element of range, so for example, 0
cidr_range = var.create_reverse_dns_zone == true && var.address_range != null && local.fourth_element != null ? element(split("/", local.fourth_element), 1) : null
# Gets the the cidr portion of the range, so for example, 24
# Reconstructs the name using above elements to create, for example, 24-0.2.0.10.in-addr.arpa
reverse_zone_name = var.create_reverse_dns_zone == true && var.address_range != null ? format("%d-%d.%d.%d.%d.in-addr.arpa", local.cidr_range, local.fourth_octet, local.third_octet, local.second_octet, local.first_octet) : null
}
resource "azurerm_private_dns_zone" "reverse_dns_zone" {
for_each = var.create_reverse_dns_zone == true && var.address_range != null ? toset(var.address_range) : []
name = local.reverse_zone_name
resource_group_name = var.rg_name
tags = var.tags
}
resource "azurerm_private_dns_zone_virtual_network_link" "reverse_dns_zone_link" {
for_each = try(var.link_to_vnet, true) == true && var.create_reverse_dns_zone == true && var.address_range != null ? toset(var.address_range) : []
name = var.vnet_link_name == null ? "${lower(replace(azurerm_private_dns_zone.reverse_dns_zone[each.key].name, ".", "-"))}-link-to-${local.vnet_name}" : try(var.vnet_link_name, null)
resource_group_name = try(var.rg_name, null)
private_dns_zone_name = azurerm_private_dns_zone.reverse_dns_zone[each.key].name
virtual_network_id = try(var.vnet_id, null)
tags = try(var.tags, null)
}
resource "azurerm_private_dns_zone_virtual_network_link" "reverse_dns_zone_link_hub" {
for_each = try(var.link_to_vnet, true) == true && var.create_reverse_dns_zone == true && var.attempt_reverse_dns_dns_zone_link_to_hub == true && var.address_range != null ? toset(var.address_range) : []
name = var.vnet_link_name == null ? "${lower(replace(azurerm_private_dns_zone.reverse_dns_zone[each.key].name, ".", "-"))}-link-to-${local.hub_vnet_name}" : try(var.vnet_link_name, null)
resource_group_name = try(var.rg_name, null)
private_dns_zone_name = azurerm_private_dns_zone.reverse_dns_zone[each.key].name
virtual_network_id = try(var.hub_vnet_id, null)
tags = try(var.tags, null)
}
No requirements.
Name | Version |
---|---|
azurerm | n/a |
No modules.
Name | Description | Type | Default | Required |
---|---|---|---|---|
address_range | If creating a reverse DNS zone, provide this input with a full cidr range, e.g. 10.0.0.0/16, as it will be split and made if the create_reverse_dns_zone variable is set to true | list(string) |
null |
no |
attempt_reverse_dns_dns_zone_link_to_hub | Whether the DNS zone being made should be linked to the hub | bool |
false |
no |
create_reverse_dns_zone | Whether or not to create a reverse DNS zone, defaults to false | bool |
false |
no |
hub_vnet_id | The ID of the hub vnet | string |
null |
no |
link_to_vnet | Whether or not the zone should be linked to the vnet, defaults to false | bool |
false |
no |
location | The location for this resource to be put in | string |
n/a | yes |
rg_name | The name of the resource group, this module does not create a resource group, it is expecting the value of a resource group already exists | string |
n/a | yes |
tags | A map of the tags to use on the resources that are deployed with this module. | map(string) |
n/a | yes |
vnet_id | The vnet id the dns zones should be linked to | string |
null |
no |
vnet_link_name | The name of the vnet link if one is made, defaults to null | string |
null |
no |
Name | Description |
---|---|
dns_number_of_record_sets | The max number of virtual network links with registration |
dns_zone_id | The dns zone ids |
dns_zone_max_number_of_record_sets | The max number of record sets |
dns_zone_max_number_of_virtual_network_links | The dns max number of virtual network links |
dns_zone_max_number_of_virtual_network_links_with_registration | The max number of virtual network links with registration |
dns_zone_name | The dns zone name |
vnet_link_id | The vnet link ids |