Skip to main content

Supported capabilities

This is a reference design that covers a defined set of AVD capabilities on Infrahub. This page lists what it supports today; use it to check a capability before planning a deployment. PyAVD inputs that are not listed here can be passed through the avd_custom_hostvars attribute, described in the developer guide.

AVD example scenarios​

The reference design ships a loadable fabric for each of these official AVD example designs. Every device in these fabrics renders a valid PyAVD EOS configuration on a fresh instance.

AVD example scenarioFabricDesign
Single-DC L3LSFabric-L3LSeBGP underlay, EVPN/VXLAN L3LS.
Single-DC Multi-Pod L3LS (5-stage Clos)Fabric-L3LS-MultiPod-A6 super-spines + 3 pods; super-spines as EVPN route servers; tenants as VLAN-aware bundles (evpn_vlan_aware_bundles).
Dual-DC L3LSFabric-L3LS-Multi-DomainEVPN DC Gateway (next-hop-self) + DCI l3_edge p2p links, via avd_custom_hostvars.
L2LS fabric (standalone)Fabric-L2LSUnderlay none → l2spine + l2leaf, pure Layer-2 (no VNI/VXLAN/EVPN), MLAG on both tiers, two MLAG rack pairs. Tag-scoped VLANs BLUE-NET/GREEN-NET/ORANGE-NET and per-tier MSTP priorities (l2spine 4096 / l2leaf 16384). Host endpoints sit on leaf access ports through per-color access profiles (one untagged VLAN each, PortFast edge).
Campus fabricFabric-CampusUnderlay ospf → l3spine core with anycast SVIs (Evpn.Svi) + l2leaf access; dot1x/PoE via avd_custom_hostvars.
ISIS-LDP IPVPNFabric-ISIS-LDPUnderlay isis-ldp → p core + pe edge; per-customer L3VPN VRFs (Evpn.Tenant/Ipam.VRF).

The fabric underlay_routing_protocol attribute selects the design, and the pod and rack generators map it to the matching device roles.

Services in every design use the same objects: Ipam.VLAN, Evpn.Tenant, Ipam.VRF, and Evpn.Svi. The EVPN DC Gateway remote peers and campus dot1x/PoE settings are passed through avd_custom_hostvars.

Fabric generation​

CapabilityNotes
Generate a full fabric (Fabric → Pod → Rack → Device) from a designSuper-spines, spines, and leaves are created from device templates, with no per-device host_vars written by hand.
Cable devices together automaticallyThe generators create uplinks and device-to-device links.
Regenerate idempotentlyChecksum-based change detection skips work when nothing changed, so re-running is safe.

Addressing & numbering​

CapabilityNotes
Allocate loopback, interconnect, and management prefixes/IPs from poolsDrawn from branch-aware pools so parallel work does not collide.
Allocate DCI point-to-point /31 prefixes from fabric DCI pool rolesGenerated DCI l3_edge addressing resolves from NetworkFabric.fabric_ip_pools role dci first, legacy NetworkFabric.dci_pool second, and a deterministic Fabric Supernet fallback when the DCI prefix-pool role is missing.
Allocate BGP ASNs and node IDs from poolsAssigned automatically during generation.

Services (VLAN / EVPN / VRF / MLAG / LAG / routing)​

CapabilityNotes
VLANs and L2 domainsDefined in Infrahub and rendered into the configuration.
Fabric-level EVPN settingsThe fabric sets the underlay protocol (eBGP, OSPF, ISIS-LDP, or none), the overlay protocol (eBGP or iBGP), VLAN-aware bundles, the virtual router MAC address, the uplink MTU, and the spanning-tree mode. Super-spines act as EVPN route servers.
EVPN L3 VRFsEach tenant VRF renders with its VRF VNI, anycast SVIs, and VTEP diagnostic loopback.
Route distinguishers and route targetsAVD derives them automatically for each VRF.
EVPN Multi-Domain Gateway on border leafsFabric-owned EvpnDomain objects hold local EvpnGatewayGroup children for border_leaf devices, which render as PyAVD EVPN Gateway settings for All-Active Multihoming. Each pod points at its group's local domain.
DCI links between border leafsNetworkLink objects with role=dci reuse shared physical endpoints and render as PyAVD l3_edge.p2p_links.
MLAGAn MLAG domain sets the domain ID, the two peers, the shared BGP ASN, and an optional virtual router MAC address. Peer-link interfaces come from interfaces with the mlag_peer role, and peer addressing comes from the pod MLAG pools. Applies to leaf and border leaf, and to l2leaf, l2spine, and l3spine in L2LS, campus, and ISIS-LDP fabrics.
Server LAGServer port-channels render with the LACP mode (active, passive, or static), the channel ID, and trunk or access VLANs. A LAG that spans two non-MLAG switches can use EVPN all-active multihoming with an automatically derived ESI.
BGP peer groupsAVD creates the underlay, overlay, and MLAG peer groups. The fabric sets a password for each of the three.
Prefix lists, route maps, static routesThe backfill generator records the prefix lists, route maps, and static routes from the AVD output in Infrahub.

Rendering & artifacts​

CapabilityNotes
Render Arista EOS device configurations (PyAVD)Deploy-ready per-device EOS CLI, as downloadable artifacts.
Fabric and per-device documentation (Markdown)Generated from the same data as the configuration.
Cabling plan (CSV)One row per connection for the field/cabling team.
Computed interface descriptionsConsistent interface descriptions, updated automatically.
ANTA test catalog (per device, YAML)Generated when the fabric anta_enabled flag is set.

Validation (ANTA)​

CapabilityNotes
ANTA test-catalog generationThe avd_anta_catalog transform runs when anta_enabled is set; fabric-level avd_catalogs_filters can exclude named tests.
On-demand ANTA executionAfter deployment, the Validate with ANTA Semaphore task scopes the Infrahub main inventory to one fabric, fetches each device catalog, and writes JSON, Markdown, and CSV reports. See Run ANTA after deployment.

Validation (CloudVision)​

CapabilityNotes
CloudVision config validation in a proposed changeThe cv-config-validation check deploys the rendered configs to a CloudVision workspace and blocks the proposed change on a failed build. Opt in per fabric with cloudvision_managed. See CloudVision Validation.
Workspace tracking and review linkEach workspace is recorded as a CloudvisionWorkspace object and its URL posted to the proposed change.
Workspace submissionA CoreCustomWebhook sends the submission when the proposed change merges, or you run invoke submit-cv-workspace. Point the webhook at your own automation endpoint.

Lab​

CapabilityNotes
ContainerLab topology per fabricThe containerlab_topology artifact renders the devices and links of L3LS, L2LS, and campus fabrics; kinds, images, and interface mappings come from schema attributes. See ContainerLab.
Deploying the generated topologyansible/deploy_clab.yml stages the topology, EOS configs, and bind sources on a ContainerLab host and deploys them. The Semaphore template fetches and stages the files.

Deployment​

CapabilityNotes
Deploy configurations to devicesThrough the bundled Ansible runner or CloudVision (CVP/CVaaS).

Interfaces & change management​

CapabilityNotes
Self-service portal (Streamlit) for guided provisioningAlongside the Infrahub Web UI, GraphQL API, and MCP.
Branches, proposed changes, approvals, full lineageStandard Infrahub change management.
Brownfield importModeling an existing fabric and importing configs through Infrahub Sync is available as a guided engagement.

Fabric pool management​

CapabilityNotes
Role-driven fabric pool collectionNetworkFabric.fabric_ip_pools covers Management, Loopback, Loopback VTEP, Fabric Point-to-Point, DCI, and Fabric Supernet roles.
Pod-scoped pool collection and containment validationNetworkPod.pod_ip_pools supports pod Loopback, VTEP, Fabric Point-to-Point, MLAG, and MLAG Peering roles with parent-fabric containment checks.
Legacy pool migration compatibilityLegacy fabric and pod pool relationships remain optional, and the seed data populates both the legacy and the new relationships.
Deterministic fallback/default poolsThe Fabric Supernet fallback creates stable prefix pools; MLAG defaults use stable /31 pool objects.