Я не вижу, как динамические правила создаются в группе безопасности сети Azure (NSG). Мой шаблон выглядит нормально после проверки. Однако, когда я запускаю terraform apply, NSG создает без пользовательских правил, которые я помещаю в раздел динамических правил. Поскольку это часть модуля, я должен использовать некоторую логику для итерации.
Ниже мой код из файла module.tf
ресурс "azurerm_network_security_group" "nsg" {
for_each = var.subnet_prefix
имя = нижний ("nsg_${каждый ключ}_in")
имя_группы_ресурсов = var.vnet_группа_ресурсов
местоположение = var.location
динамическое "правило_безопасности" {
for_each = поиск (каждое.значение, "nsg_rules", [])
содержание {
name = lookup(security_rule.value,"name",null)
описание = поиск(security_rule.value, "описание", ноль)
приоритет = поиск(security_rule.value,"priority",null)
направление = поиск (правило_безопасности.значение,"направление",нуль)
доступ = поиск (security_rule.value, «доступ», ноль)
протокол = поиск (security_rule.value, «протокол», ноль)
source_port_range = "*"
диапазон_портов_назначения = поиск (правило_безопасности.значение, «диапазон_портов_назначения», ноль)
source_address_prefix = поиск(security_rule.value,"source_address_prefix",null)
target_address_prefix = lookup(security_rule.value,"destination_address_prefix",null)
}
}
}
Значения будут поступать из файла terraform.tfvars, который я объявил ниже. Для соответствия я удалил исходные значения со случайным текстом.
subnet_prefix = {
sa0 = {
префикс = "подсеть постоянного тока"
адресное_пространство = ["XXXXXX"]
nsg_name = "nsg0"
nsg_rules = [
{
имя = "правило1"
описание = "ХХХХХХ"
приоритет = 220
направление = "Исходящее"
доступ = "Разрешить"
протокол = "*"
source_port_range = "*"
source_port_ranges = ноль
диапазон_портов_назначения = *
диапазон_порта_назначения = ноль
исходный_адрес_префикс = "*"
source_address_prefixes = ноль
destination_address_prefix = "X.X.X.X/26"
destination_address_prefixes = ноль
source_application_security_group_names = []
target_application_security_group_names = []
}
]
}
}