feat: add Warm Spare (HA) with VIP for MX appliances

Configura meraki_appliance_warm_spare con VIP flotante en WAN1:
  - Spare: BCN01-F04-MX02 (serial resuelto por nombre)
  - Uplink mode: virtual
  - VIP WAN1: 213.229.159.148

La IP de salida del tráfico será siempre la VIP (.148),
independientemente de qué MX esté activo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jose Martinez
2026-03-26 20:59:20 +01:00
co-authored by Claude Sonnet 4.6
parent 5d0f043503
commit 4a2eeb6c17
5 changed files with 47 additions and 2 deletions
+11
View File
@@ -200,6 +200,17 @@ resource "meraki_device_management_interface" "mx_wan" {
wan1_static_dns = each.value.wan1_static_dns
}
# 4c. Warm Spare (HA) — VIP flotante entre primary y spare
resource "meraki_appliance_warm_spare" "ha" {
count = var.mx_warm_spare != null ? 1 : 0
network_id = local.network_id
enabled = var.mx_warm_spare.enabled
spare_serial = local.device_serials[var.mx_warm_spare.spare_name]
uplink_mode = var.mx_warm_spare.uplink_mode
virtual_ip1 = var.mx_warm_spare.virtual_ip1
}
# --- CONFIGURACIÓN SWITCHES (MS) ---
# 5. Políticas de acceso 802.1X
+12
View File
@@ -198,6 +198,18 @@ variable "mx_wan_uplinks" {
description = "Configuración de interfaz WAN1 estática para cada MX. El serial se resuelve automáticamente por nombre de dispositivo."
}
# Warm Spare (HA) del firewall MX
variable "mx_warm_spare" {
type = object({
enabled = optional(bool, true)
spare_name = string # Nombre del MX spare en el Dashboard
uplink_mode = optional(string, "virtual")
virtual_ip1 = optional(string, null) # VIP WAN1
})
default = null
description = "Configuración Warm Spare (HA) del MX. El serial del spare se resuelve por nombre."
}
# Puertos del firewall MX
variable "appliance_ports" {
type = list(object({