feat: soporte port_range con listas y combinaciones ("2,3", "1-3,5")

- _expand_range ahora procesa segmentos separados por coma, cada uno
  puede ser un puerto único o un rango numérico (1-48).
  Ejemplos: "2,3" -> ["2","3"] | "1-3,5,47" -> ["1","2","3","5","47"]
- switch.auto.tfvars: puertos 2 y 3 de eqt-lab-st01-sw01 consolidados
  en una sola entrada con port_range = "2,3"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jose Martinez
2026-03-26 07:09:12 +01:00
co-authored by Claude Sonnet 4.6
parent a1068c831d
commit 6dc629ea18
2 changed files with 11 additions and 20 deletions
+8 -7
View File
@@ -31,17 +31,18 @@ locals {
network_id = [for n in data.meraki_networks.net.items : n.id if n.name == var.network_name][0] network_id = [for n in data.meraki_networks.net.items : n.id if n.name == var.network_name][0]
# Helper: expande un port_range en lista de port_ids # Helper: expande un port_range en lista de port_ids
# "1-48" -> ["1","2",...,"48"] | "1" -> ["1"] # Soporta: "1" -> ["1"] | "1-4" -> ["1","2","3","4"] | "2,3" -> ["2","3"] | "1-3,5,47" -> ["1","2","3","5","47"]
_expand_range = { _expand_range = {
for config in concat(var.switch_port_configs, var.switch_stack_port_configs, var.switch_named_port_configs) : for config in concat(var.switch_port_configs, var.switch_stack_port_configs, var.switch_named_port_configs) :
"${try(config.serial, try(config.stack_name, config.switch_name))}:${config.port_range}" => ( "${try(config.serial, try(config.stack_name, config.switch_name))}:${config.port_range}" => flatten([
length(split("-", config.port_range)) == 2 for segment in split(",", config.port_range) :
length(split("-", trimspace(segment))) == 2
? [for i in range( ? [for i in range(
tonumber(split("-", config.port_range)[0]), tonumber(split("-", trimspace(segment))[0]),
tonumber(split("-", config.port_range)[1]) + 1 tonumber(split("-", trimspace(segment))[1]) + 1
) : tostring(i)] ) : tostring(i)]
: [config.port_range] : [trimspace(segment)]
) ])
} }
# Mapa de nombre de stack -> lista de seriales de sus miembros # Mapa de nombre de stack -> lista de seriales de sus miembros
+3 -13
View File
@@ -145,22 +145,12 @@ switch_named_port_configs = [
access_policy_type = "Open" access_policy_type = "Open"
}, },
{ {
# Puerto 2 de eqt-lab-st01-sw01 → AP (trunk, nativa 108 APs, tageadas 100 ACCESS y 101 GUEST) # Puertos 2 y 3 de eqt-lab-st01-sw01 → APs (trunk, nativa 108 APs, tageadas 100 ACCESS y 101 GUEST)
switch_name = "eqt-lab-st01-sw01" switch_name = "eqt-lab-st01-sw01"
port_range = "2" port_range = "2,3"
name = "AP" name = "AP"
type = "trunk" type = "trunk"
vlan = 108 # APs - VLAN nativa (untagged) vlan = 108 # APs - VLAN nativa (untagged)
allowed_vlans = "100,101,108" # ACCESS + GUEST + APs
access_policy_type = "Open"
},
{
# Puerto 3 de eqt-lab-st01-sw01 → AP (trunk, nativa 108 APs, tageadas 100 ACCESS y 101 GUEST)
switch_name = "eqt-lab-st01-sw01"
port_range = "3"
name = "AP"
type = "trunk"
vlan = 108 # APs - VLAN nativa (untagged)
allowed_vlans = "100,101,108" # ACCESS + GUEST + APs allowed_vlans = "100,101,108" # ACCESS + GUEST + APs
access_policy_type = "Open" access_policy_type = "Open"
}, },