Initial commit: add .gitignore and README
This commit is contained in:
73
terraform/modules/azure/networking/main.tf
Normal file
73
terraform/modules/azure/networking/main.tf
Normal file
@@ -0,0 +1,73 @@
|
||||
# Azure Networking Module
|
||||
# Main resources
|
||||
|
||||
terraform {
|
||||
required_providers {
|
||||
azurerm = {
|
||||
source = "hashicorp/azurerm"
|
||||
version = "~> 3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Virtual Network
|
||||
resource "azurerm_virtual_network" "main" {
|
||||
name = var.vnet_name
|
||||
address_space = var.address_space
|
||||
location = var.location
|
||||
resource_group_name = var.resource_group_name
|
||||
tags = var.tags
|
||||
|
||||
lifecycle {
|
||||
create_before_destroy = true
|
||||
}
|
||||
}
|
||||
|
||||
# Subnets
|
||||
resource "azurerm_subnet" "subnets" {
|
||||
for_each = var.subnets
|
||||
|
||||
name = each.value.name
|
||||
resource_group_name = var.resource_group_name
|
||||
virtual_network_name = azurerm_virtual_network.main.name
|
||||
address_prefixes = each.value.address_prefixes
|
||||
service_endpoints = each.value.service_endpoints
|
||||
|
||||
lifecycle {
|
||||
create_before_destroy = true
|
||||
}
|
||||
}
|
||||
|
||||
# Network Security Groups
|
||||
resource "azurerm_network_security_group" "nsgs" {
|
||||
for_each = var.network_security_groups
|
||||
|
||||
name = each.value.name
|
||||
location = var.location
|
||||
resource_group_name = var.resource_group_name
|
||||
tags = var.tags
|
||||
|
||||
dynamic "security_rule" {
|
||||
for_each = each.value.security_rules
|
||||
content {
|
||||
name = security_rule.value.name
|
||||
priority = security_rule.value.priority
|
||||
direction = security_rule.value.direction
|
||||
access = security_rule.value.access
|
||||
protocol = security_rule.value.protocol
|
||||
source_port_range = security_rule.value.source_port_range
|
||||
destination_port_range = security_rule.value.destination_port_range
|
||||
source_address_prefix = security_rule.value.source_address_prefix
|
||||
destination_address_prefix = security_rule.value.destination_address_prefix
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Associate NSGs with subnets
|
||||
resource "azurerm_subnet_network_security_group_association" "nsg_associations" {
|
||||
for_each = var.network_security_groups
|
||||
|
||||
subnet_id = azurerm_subnet.subnets[each.value.subnet_key].id
|
||||
network_security_group_id = azurerm_network_security_group.nsgs[each.key].id
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user