main.rules.tf (31 lines of code) (raw):

resource "azurerm_network_security_rule" "this" { for_each = var.security_rules access = each.value.access direction = each.value.direction name = each.value.name network_security_group_name = azurerm_network_security_group.this.name priority = each.value.priority protocol = each.value.protocol resource_group_name = azurerm_network_security_group.this.resource_group_name description = each.value.description destination_address_prefix = each.value.destination_address_prefix destination_address_prefixes = each.value.destination_address_prefixes destination_application_security_group_ids = each.value.destination_application_security_group_ids destination_port_range = each.value.destination_port_range destination_port_ranges = each.value.destination_port_ranges source_address_prefix = each.value.source_address_prefix source_address_prefixes = each.value.source_address_prefixes source_application_security_group_ids = each.value.source_application_security_group_ids source_port_range = each.value.source_port_range source_port_ranges = each.value.source_port_ranges dynamic "timeouts" { for_each = each.value.timeouts == null ? [] : [each.value.timeouts] content { create = timeouts.value.create delete = timeouts.value.delete read = timeouts.value.read update = timeouts.value.update } } # Do not remove this `depends_on` block. It is required to ensure the NSG is created before the rule. depends_on = [azurerm_network_security_group.this] }