Nu pot vedea regulile dinamice create în Azure Network Security Group (NSG). Șablonul meu arată ok din verificările de validare. Cu toate acestea, când rulez aplicația terraform, NSG creează fără regulile personalizate pe care le-am pus în secțiunea de reguli dinamice. Deoarece aceasta face parte dintr-un modul, trebuie să folosesc ceva logică pentru iterație.
Mai jos este codul meu din fișierul module.tf
resursa „azurerm_network_security_group” „nsg” {
for_each = var.subnet_prefix
nume = inferior ("nsg_${each.key}_in")
resource_group_name = var.vnet_resourcegroup
locație = var.locație
dinamic „security_rule” {
for_each = căutare (each.value, „nsg_rules”, [])
continut {
nume = căutare(regula_securitate.valoare,„nume”, null)
description = lookup(security_rule.value, „description”, null)
priority = search(security_rule.value,"priority",null)
direction = lookup(security_rule.value,"direction",null)
acces = căutare(regula_securitate.valoare,"acces",null)
protocol = search(security_rule.value,"protocol",null)
source_port_range = "*"
destination_port_range = lookup(security_rule.value,"destination_port_range",null)
source_address_prefix = căutare(security_rule.value,"source_address_prefix", null)
destinație_address_prefix = căutare(security_rule.value,"destination_address_prefix", null)
}
}
}
Valorile vor veni dintr-un fișier terraform.tfvars, pe care l-am declarat ca mai jos. Pentru conformitate, am eliminat valorile originale cu text aleatoriu.
prefix_subrețea = {
sa0 = {
prefix = "dc-subnet"
address_space = ["XXXXXX"]
nsg_name = "nsg0"
nsg_rules = [
{
nume = "regula1"
descriere = "XXXXXX"
prioritate = 220
directie = "Ieșire"
acces = "Permite"
protocol = "*"
source_port_range = "*"
source_port_ranges = null
interval_port_destinație = *
destination_port_ranges = null
source_address_prefix = "*"
prefixe_adresă_sursă = nul
destination_address_prefix = „X.X.X.X/26”
destinație_address_prefixes = nul
sursă_aplicație_securitate_grup_nume = []
destination_application_security_group_names = []
}
]
}
}