Files
arista-evpn-vxlan-clab/infrahub/objects/12-mlag.yml
Damien 37b3261416 fix: add human_friendly_id to 4 schemas for idempotent Repository sync
Add local_identifier attribute (kind: Text) + uniqueness_constraints +
human_friendly_id to InfraVlanVniMapping, InfraEVPNInstance,
InfraMlagInterface and InfraUnderlayLink so Infrahub can perform
upserts during Repository backend sync instead of duplicating objects
on every import.

Schema changes (following the InfraBGPPeerGroup/BGPSession pattern):
- infrahub/schemas/vlan_vxlan.yml: VlanVniMapping + EVPNInstance
- infrahub/schemas/mlag.yml: MlagInterface
- infrahub/schemas/extensions.yml: UnderlayLink

Object file updates:
- 06-vlans-vxlan.yml: local_identifier added to all VlanVniMapping and
  EVPNInstance entries (format: leaf1__vlan40__vni110040 / leaf1__vlan40)
- 12-mlag.yml: InfraMlagInterface section added for all 4 MLAG pairs
  (format: mlag1__leaf1-leaf2)
- 14-fabric-links.yml: InfraUnderlayLink section added for all 16
  spine↔leaf P2P links (format: spine1-eth1__leaf1-eth11)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 17:19:30 +01:00

181 lines
5.9 KiB
YAML

# MLAG: Domains and Peer Configs
# Depends on: 02-devices, 03-interfaces (Vlan4090, Port-Channel999), 05-vlans-vxlan (VLAN 4090/4091)
#
# All 4 MLAG pairs share domain-id "leafs" and virtual-mac c001.cafe.babe
# but each is a separate MlagDomain object linking two devices.
# MLAG peer VLAN: 4090, MLAG iBGP VLAN: 4091
---
apiVersion: infrahub.app/v1
kind: Object
spec:
kind: InfraMlagDomain
data:
# MLAG pair 1: leaf1 + leaf2
- domain_id: leafs-1-2
description: MLAG domain for leaf1/leaf2 pair
virtual_mac: "c001.cafe.babe"
heartbeat_vrf: mgmt
dual_primary_detection: true
dual_primary_delay: 10
dual_primary_action: errdisable
devices:
- ["leaf1"]
- ["leaf2"]
peer_vlan: ["4090"]
ibgp_vlan: ["4091"]
# MLAG pair 2: leaf3 + leaf4
- domain_id: leafs-3-4
description: MLAG domain for leaf3/leaf4 pair
virtual_mac: "c001.cafe.babe"
heartbeat_vrf: mgmt
dual_primary_detection: true
dual_primary_delay: 10
dual_primary_action: errdisable
devices:
- ["leaf3"]
- ["leaf4"]
peer_vlan: ["4090"]
ibgp_vlan: ["4091"]
# MLAG pair 3: leaf5 + leaf6
- domain_id: leafs-5-6
description: MLAG domain for leaf5/leaf6 pair
virtual_mac: "c001.cafe.babe"
heartbeat_vrf: mgmt
dual_primary_detection: true
dual_primary_delay: 10
dual_primary_action: errdisable
devices:
- ["leaf5"]
- ["leaf6"]
peer_vlan: ["4090"]
ibgp_vlan: ["4091"]
# MLAG pair 4: leaf7 + leaf8
- domain_id: leafs-7-8
description: MLAG domain for leaf7/leaf8 pair
virtual_mac: "c001.cafe.babe"
heartbeat_vrf: mgmt
dual_primary_detection: true
dual_primary_delay: 10
dual_primary_action: errdisable
devices:
- ["leaf7"]
- ["leaf8"]
peer_vlan: ["4090"]
ibgp_vlan: ["4091"]
---
apiVersion: infrahub.app/v1
kind: Object
spec:
kind: InfraMlagPeerConfig
data:
# Leaf1 MLAG peer config
- device: ["leaf1"]
mlag_domain: ["leafs-1-2"]
local_interface_ip: "10.0.199.254/31"
peer_address: "10.0.199.255"
heartbeat_peer_ip: "172.16.0.50"
local_interface: ["leaf1", "Vlan4090"]
peer_link: ["leaf1", "Port-Channel999"]
# Leaf2 MLAG peer config
- device: ["leaf2"]
mlag_domain: ["leafs-1-2"]
local_interface_ip: "10.0.199.255/31"
peer_address: "10.0.199.254"
heartbeat_peer_ip: "172.16.0.25"
local_interface: ["leaf2", "Vlan4090"]
peer_link: ["leaf2", "Port-Channel999"]
# Leaf3 MLAG peer config
- device: ["leaf3"]
mlag_domain: ["leafs-3-4"]
local_interface_ip: "10.0.199.252/31"
peer_address: "10.0.199.253"
heartbeat_peer_ip: "172.16.0.28"
local_interface: ["leaf3", "Vlan4090"]
peer_link: ["leaf3", "Port-Channel999"]
# Leaf4 MLAG peer config
- device: ["leaf4"]
mlag_domain: ["leafs-3-4"]
local_interface_ip: "10.0.199.253/31"
peer_address: "10.0.199.252"
heartbeat_peer_ip: "172.16.0.27"
local_interface: ["leaf4", "Vlan4090"]
peer_link: ["leaf4", "Port-Channel999"]
# Leaf5 MLAG peer config
- device: ["leaf5"]
mlag_domain: ["leafs-5-6"]
local_interface_ip: "10.0.199.250/31"
peer_address: "10.0.199.251"
heartbeat_peer_ip: "172.16.0.30"
local_interface: ["leaf5", "Vlan4090"]
peer_link: ["leaf5", "Port-Channel999"]
# Leaf6 MLAG peer config
- device: ["leaf6"]
mlag_domain: ["leafs-5-6"]
local_interface_ip: "10.0.199.251/31"
peer_address: "10.0.199.250"
heartbeat_peer_ip: "172.16.0.29"
local_interface: ["leaf6", "Vlan4090"]
peer_link: ["leaf6", "Port-Channel999"]
# Leaf7 MLAG peer config
- device: ["leaf7"]
mlag_domain: ["leafs-7-8"]
local_interface_ip: "10.0.199.248/31"
peer_address: "10.0.199.249"
heartbeat_peer_ip: "172.16.0.32"
local_interface: ["leaf7", "Vlan4090"]
peer_link: ["leaf7", "Port-Channel999"]
# Leaf8 MLAG peer config
- device: ["leaf8"]
mlag_domain: ["leafs-7-8"]
local_interface_ip: "10.0.199.249/31"
peer_address: "10.0.199.248"
heartbeat_peer_ip: "172.16.0.31"
local_interface: ["leaf8", "Vlan4090"]
peer_link: ["leaf8", "Port-Channel999"]
---
apiVersion: infrahub.app/v1
kind: Object
spec:
kind: InfraMlagInterface
data:
# MLAG interface 1 on leaf1/leaf2 pair (Port-Channel1 → host1)
- local_identifier: mlag1__leaf1-leaf2
mlag_id: 1
description: "MLAG interface 1 for leaf1/leaf2 pair (host1)"
lacp_fallback_timeout: 5
lacp_fallback_individual: true
mlag_domain: ["leafs-1-2"]
lag_interfaces:
- ["leaf1", "Port-Channel1"]
- ["leaf2", "Port-Channel1"]
# MLAG interface 1 on leaf3/leaf4 pair (Port-Channel1 → host2)
- local_identifier: mlag1__leaf3-leaf4
mlag_id: 1
description: "MLAG interface 1 for leaf3/leaf4 pair (host2)"
lacp_fallback_timeout: 5
lacp_fallback_individual: true
mlag_domain: ["leafs-3-4"]
lag_interfaces:
- ["leaf3", "Port-Channel1"]
- ["leaf4", "Port-Channel1"]
# MLAG interface 1 on leaf5/leaf6 pair (Port-Channel1 → host3)
- local_identifier: mlag1__leaf5-leaf6
mlag_id: 1
description: "MLAG interface 1 for leaf5/leaf6 pair (host3)"
lacp_fallback_timeout: 5
lacp_fallback_individual: true
mlag_domain: ["leafs-5-6"]
lag_interfaces:
- ["leaf5", "Port-Channel1"]
- ["leaf6", "Port-Channel1"]
# MLAG interface 1 on leaf7/leaf8 pair (Port-Channel1 → host4)
- local_identifier: mlag1__leaf7-leaf8
mlag_id: 1
description: "MLAG interface 1 for leaf7/leaf8 pair (host4)"
lacp_fallback_timeout: 5
lacp_fallback_individual: true
mlag_domain: ["leafs-7-8"]
lag_interfaces:
- ["leaf7", "Port-Channel1"]
- ["leaf8", "Port-Channel1"]