feat: add switch stack port config with dynamic serial resolution
- Add data source meraki_switch_stacks to resolve member serials by stack name - Add switch_stack_port_configs variable: specify stack_name + port_range instead of individual switch serials - Terraform applies port_range to ALL members of the stack automatically - Merge switch_port_configs and switch_stack_port_configs into all_ports local - Add example for bcn01-lab-stack01 (2x48p) in switch.auto.tfvars Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
16c09f8cc5
commit
c6343d977e
@@ -29,6 +29,7 @@ module "bcn01_lab" {
|
||||
firewall_rules = var.firewall_rules
|
||||
wireless_ssids = var.wireless_ssids
|
||||
radius_secret = var.radius_secret
|
||||
switch_access_policies = var.switch_access_policies
|
||||
switch_port_configs = var.switch_port_configs
|
||||
switch_access_policies = var.switch_access_policies
|
||||
switch_port_configs = var.switch_port_configs
|
||||
switch_stack_port_configs = var.switch_stack_port_configs
|
||||
}
|
||||
|
||||
@@ -73,3 +73,42 @@ switch_access_policies = [
|
||||
#
|
||||
# ]
|
||||
switch_port_configs = []
|
||||
|
||||
# --- PUERTOS DE STACK ---
|
||||
# Terraform resuelve automáticamente los seriales de todos los miembros del stack.
|
||||
# El stack_name debe coincidir exactamente con el nombre en Dashboard > Switches > Stacks.
|
||||
# Terraform aplicará el mismo port_range a CADA switch del stack (ambos de 48 puertos).
|
||||
#
|
||||
# Ejemplo para bcn01-lab-stack01 (2x 48 puertos):
|
||||
# switch_stack_port_configs = [
|
||||
#
|
||||
# # Puertos 1-44: acceso general con 802.1X (PCs, portátiles)
|
||||
# {
|
||||
# stack_name = "bcn01-lab-stack01"
|
||||
# port_range = "1-44"
|
||||
# type = "access"
|
||||
# vlan = 100 # ACCESS - fallback si Okta no devuelve VLAN
|
||||
# access_policy_type = "Custom access policy"
|
||||
# access_policy_number = 1 # id de la política DOT1X-CORPO
|
||||
# },
|
||||
#
|
||||
# # Puertos 45-46: impresoras (VLAN fija, sin 802.1X)
|
||||
# {
|
||||
# stack_name = "bcn01-lab-stack01"
|
||||
# port_range = "45-46"
|
||||
# type = "access"
|
||||
# vlan = 103 # PRINTERS
|
||||
# access_policy_type = "Open"
|
||||
# },
|
||||
#
|
||||
# # Puertos 47-48: APs (VLAN fija, sin 802.1X)
|
||||
# {
|
||||
# stack_name = "bcn01-lab-stack01"
|
||||
# port_range = "47-48"
|
||||
# type = "access"
|
||||
# vlan = 108 # APs
|
||||
# access_policy_type = "Open"
|
||||
# },
|
||||
#
|
||||
# ]
|
||||
switch_stack_port_configs = []
|
||||
|
||||
@@ -110,3 +110,18 @@ variable "switch_port_configs" {
|
||||
default = []
|
||||
description = "Puertos de switch a configurar con 802.1X. Requiere serial del switch."
|
||||
}
|
||||
|
||||
# Configuración de puertos por nombre de stack
|
||||
variable "switch_stack_port_configs" {
|
||||
type = list(object({
|
||||
stack_name = string
|
||||
port_range = string
|
||||
name = optional(string, "")
|
||||
type = optional(string, "access")
|
||||
vlan = optional(number, null)
|
||||
access_policy_type = optional(string, "Open")
|
||||
access_policy_number = optional(number, null)
|
||||
}))
|
||||
default = []
|
||||
description = "Puertos de stack a configurar por nombre. Terraform resuelve los seriales automáticamente."
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user