feat: add 802.1X switch access policy support

- Add meraki_switch_access_policy resource to module (multi-auth, critical VLAN)
- Add meraki_switch_port resource for per-port policy assignment
- Add switch_access_policies and switch_port_configs variables to module and site
- Create switch.auto.tfvars for BCN01-LAB with 802.1X-CORPO policy
  (RADIUS: 15.15.15.15:1912, critical VLAN: 100, host_mode: Multi-Auth)
- switch_port_configs starts empty; add serial + port_id to assign policy to ports

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jose Martinez
2026-03-18 11:01:55 +01:00
co-authored by Claude Sonnet 4.6
parent cb77482368
commit 9b86ba97af
5 changed files with 168 additions and 6 deletions
+36
View File
@@ -82,3 +82,39 @@ variable "switch_vlans" {
}
}
# Políticas de acceso 802.1X para switches
variable "switch_access_policies" {
type = list(object({
name = string
access_policy_type = optional(string, "802.1x")
host_mode = optional(string, "Multi-Auth")
radius_accounting_enabled = optional(bool, false)
radius_failed_auth_vlan_id = optional(number, null)
radius_re_authentication_interval = optional(number, 0)
url_redirect_walled_garden_enabled = optional(bool, false)
radius_servers = list(object({
host = string
port = number
}))
}))
default = []
description = "Políticas de acceso 802.1X para switches MS. El shared secret se toma de radius_secret."
}
# Configuración de puertos de switch con 802.1X
# Requiere serial del switch (visible en Dashboard > Switches > nombre del switch)
variable "switch_port_configs" {
type = list(object({
serial = string
port_id = string
name = optional(string, "")
type = optional(string, "access")
vlan = optional(number, null)
voice_vlan_id = optional(number, null)
access_policy_type = optional(string, "Open")
access_policy_number = optional(number, null)
}))
default = []
description = "Puertos de switch a configurar. access_policy_number referencia el número de la política creada en switch_access_policies."
}