Files
arista-evpn-vxlan-clab/infrahub/objects/14-fabric-links.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

211 lines
7.3 KiB
YAML

# Fabric-to-Device links
# Depends on: 02-devices, 03-fabric
---
apiVersion: infrahub.app/v1
kind: Object
spec:
kind: InfraDevice
data:
- name: spine1
role: spine
fabric: "evpn-lab"
- name: spine2
role: spine
fabric: "evpn-lab"
- name: leaf1
role: leaf
fabric: "evpn-lab"
- name: leaf2
role: leaf
fabric: "evpn-lab"
- name: leaf3
role: leaf
fabric: "evpn-lab"
- name: leaf4
role: leaf
fabric: "evpn-lab"
- name: leaf5
role: leaf
fabric: "evpn-lab"
- name: leaf6
role: leaf
fabric: "evpn-lab"
- name: leaf7
role: leaf
fabric: "evpn-lab"
- name: leaf8
role: leaf
fabric: "evpn-lab"
---
apiVersion: infrahub.app/v1
kind: Object
spec:
kind: InfraUnderlayLink
data:
# ============================================================
# Spine1 P2P underlay links (Ethernet1-8 → leaf1-8:Ethernet11)
# ============================================================
- local_identifier: spine1-eth1__leaf1-eth11
description: "spine1:Ethernet1 <-> leaf1:Ethernet11"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine1"]
local_interface: ["spine1", "Ethernet1"]
local_ip_address: ["10.0.1.0/31"]
remote_device: ["leaf1"]
remote_interface: ["leaf1", "Ethernet11"]
remote_ip_address: ["10.0.1.1/31"]
- local_identifier: spine1-eth2__leaf2-eth11
description: "spine1:Ethernet2 <-> leaf2:Ethernet11"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine1"]
local_interface: ["spine1", "Ethernet2"]
local_ip_address: ["10.0.1.2/31"]
remote_device: ["leaf2"]
remote_interface: ["leaf2", "Ethernet11"]
remote_ip_address: ["10.0.1.3/31"]
- local_identifier: spine1-eth3__leaf3-eth11
description: "spine1:Ethernet3 <-> leaf3:Ethernet11"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine1"]
local_interface: ["spine1", "Ethernet3"]
local_ip_address: ["10.0.1.4/31"]
remote_device: ["leaf3"]
remote_interface: ["leaf3", "Ethernet11"]
remote_ip_address: ["10.0.1.5/31"]
- local_identifier: spine1-eth4__leaf4-eth11
description: "spine1:Ethernet4 <-> leaf4:Ethernet11"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine1"]
local_interface: ["spine1", "Ethernet4"]
local_ip_address: ["10.0.1.6/31"]
remote_device: ["leaf4"]
remote_interface: ["leaf4", "Ethernet11"]
remote_ip_address: ["10.0.1.7/31"]
- local_identifier: spine1-eth5__leaf5-eth11
description: "spine1:Ethernet5 <-> leaf5:Ethernet11"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine1"]
local_interface: ["spine1", "Ethernet5"]
local_ip_address: ["10.0.1.8/31"]
remote_device: ["leaf5"]
remote_interface: ["leaf5", "Ethernet11"]
remote_ip_address: ["10.0.1.9/31"]
- local_identifier: spine1-eth6__leaf6-eth11
description: "spine1:Ethernet6 <-> leaf6:Ethernet11"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine1"]
local_interface: ["spine1", "Ethernet6"]
local_ip_address: ["10.0.1.10/31"]
remote_device: ["leaf6"]
remote_interface: ["leaf6", "Ethernet11"]
remote_ip_address: ["10.0.1.11/31"]
- local_identifier: spine1-eth7__leaf7-eth11
description: "spine1:Ethernet7 <-> leaf7:Ethernet11"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine1"]
local_interface: ["spine1", "Ethernet7"]
local_ip_address: ["10.0.1.12/31"]
remote_device: ["leaf7"]
remote_interface: ["leaf7", "Ethernet11"]
remote_ip_address: ["10.0.1.13/31"]
- local_identifier: spine1-eth8__leaf8-eth11
description: "spine1:Ethernet8 <-> leaf8:Ethernet11"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine1"]
local_interface: ["spine1", "Ethernet8"]
local_ip_address: ["10.0.1.14/31"]
remote_device: ["leaf8"]
remote_interface: ["leaf8", "Ethernet11"]
remote_ip_address: ["10.0.1.15/31"]
# ============================================================
# Spine2 P2P underlay links (Ethernet1-8 → leaf1-8:Ethernet12)
# ============================================================
- local_identifier: spine2-eth1__leaf1-eth12
description: "spine2:Ethernet1 <-> leaf1:Ethernet12"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine2"]
local_interface: ["spine2", "Ethernet1"]
local_ip_address: ["10.0.2.0/31"]
remote_device: ["leaf1"]
remote_interface: ["leaf1", "Ethernet12"]
remote_ip_address: ["10.0.2.1/31"]
- local_identifier: spine2-eth2__leaf2-eth12
description: "spine2:Ethernet2 <-> leaf2:Ethernet12"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine2"]
local_interface: ["spine2", "Ethernet2"]
local_ip_address: ["10.0.2.2/31"]
remote_device: ["leaf2"]
remote_interface: ["leaf2", "Ethernet12"]
remote_ip_address: ["10.0.2.3/31"]
- local_identifier: spine2-eth3__leaf3-eth12
description: "spine2:Ethernet3 <-> leaf3:Ethernet12"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine2"]
local_interface: ["spine2", "Ethernet3"]
local_ip_address: ["10.0.2.4/31"]
remote_device: ["leaf3"]
remote_interface: ["leaf3", "Ethernet12"]
remote_ip_address: ["10.0.2.5/31"]
- local_identifier: spine2-eth4__leaf4-eth12
description: "spine2:Ethernet4 <-> leaf4:Ethernet12"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine2"]
local_interface: ["spine2", "Ethernet4"]
local_ip_address: ["10.0.2.6/31"]
remote_device: ["leaf4"]
remote_interface: ["leaf4", "Ethernet12"]
remote_ip_address: ["10.0.2.7/31"]
- local_identifier: spine2-eth5__leaf5-eth12
description: "spine2:Ethernet5 <-> leaf5:Ethernet12"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine2"]
local_interface: ["spine2", "Ethernet5"]
local_ip_address: ["10.0.2.8/31"]
remote_device: ["leaf5"]
remote_interface: ["leaf5", "Ethernet12"]
remote_ip_address: ["10.0.2.9/31"]
- local_identifier: spine2-eth6__leaf6-eth12
description: "spine2:Ethernet6 <-> leaf6:Ethernet12"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine2"]
local_interface: ["spine2", "Ethernet6"]
local_ip_address: ["10.0.2.10/31"]
remote_device: ["leaf6"]
remote_interface: ["leaf6", "Ethernet12"]
remote_ip_address: ["10.0.2.11/31"]
- local_identifier: spine2-eth7__leaf7-eth12
description: "spine2:Ethernet7 <-> leaf7:Ethernet12"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine2"]
local_interface: ["spine2", "Ethernet7"]
local_ip_address: ["10.0.2.12/31"]
remote_device: ["leaf7"]
remote_interface: ["leaf7", "Ethernet12"]
remote_ip_address: ["10.0.2.13/31"]
- local_identifier: spine2-eth8__leaf8-eth12
description: "spine2:Ethernet8 <-> leaf8:Ethernet12"
mtu: 9214
fabric: ["evpn-lab"]
local_device: ["spine2"]
local_interface: ["spine2", "Ethernet8"]
local_ip_address: ["10.0.2.14/31"]
remote_device: ["leaf8"]
remote_interface: ["leaf8", "Ethernet12"]
remote_ip_address: ["10.0.2.15/31"]