Petit exemple d’utilisation d’un fichier YAML contenant des règles de flux importées en tant que NSG dans Azure :
Fichier nsg-www.yml :
nsg-www:
rules:
- name: Allow HTTP
access: "Allow"
direction: "Inbound"
priority: 200
protocol: "Tcp"
source_port_range: "*"
source_address_prefix: "*"
destination_port_range: "80"
destination_address_prefix: "*"
- name: Allow HTTPS
access: "Allow"
direction: "Inbound"
priority: 210
protocol: "Tcp"
source_port_range: "*"
source_address_prefix: "*"
destination_port_range: "443"
destination_address_prefix: "*"
Utilisation au sein d’un bloc dynamique :
locals {
wwwnsg = yamldecode(file("nsg-www.yml"))
}
resource "azurerm_network_security_group" "nsg-www" {
for_each = local.wwwnsg
name = each.key
location = azurerm_resource_group.rg-dev.location
resource_group_name = azurerm_resource_group.rg-dev.name
dynamic "security_rule" {
for_each = each.value.rules[*]
content {
access = security_rule.value.access
direction = security_rule.value.direction
name = security_rule.value.name
priority = security_rule.value.priority
protocol = security_rule.value.protocol
source_port_range = security_rule.value.source_port_range
source_address_prefix = security_rule.value.source_address_prefix
destination_port_range = security_rule.value.destination_port_range
destination_address_prefix = security_rule.value.destination_address_prefix
}
}
}
resource "azurerm_network_interface_security_group_association" "nsgassoc2-azvm01" {
network_interface_id = azurerm_network_interface.nic-azvm01.id
network_security_group_id = azurerm_network_security_group.nsg-linuxserver.id
}
