Skip to content

Latest commit

 

History

622 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arista AVD Reference Design

CI

The Arista AVD Reference Design models a full Arista datacenter fabric in Infrahub — topology, addressing pools, EVPN configuration, and per-device intent as structured, queryable data. The whole team can browse, filter, and query the fabric through the web UI, GraphQL API, or MCP interface; every change runs through Infrahub branches and proposed changes, with a complete audit trail before it reaches a device.

Designed for network automation teams running AVD with static variable files who need a shared source of truth, API access, and branch-based change control — and for teams evaluating how to operate AVD at scale with a ready-made source of truth and generation pipeline.

Jump to: What it's for · How it works · Quick start · What's included · Documentation

What It's For

  • Generate a complete fabric from a design — define topology parameters and addressing pools; generators create all super-spines, spines, and leaves, allocate loopback, interconnect, and management addresses, BGP ASNs, and node IDs, and cable devices together automatically.
  • Render EOS device configurations and documentation — PyAVD runs inside Infrahub workers and produces EOS CLI configurations, per-device and fabric-level Markdown documentation, and a cabling plan CSV as downloadable artifacts.
  • Make incremental day-two changes — edit the design and regenerate; checksum-based idempotency applies changes only to affected objects; branch-aware pools prevent collisions across parallel work.
  • Give other teams access to network data — the fabric is queryable through the Infrahub Web UI, GraphQL API, and MCP interface; the Streamlit service portal provides guided workflows for stakeholders without API or CLI access.
  • Track and review every change — all changes run through Infrahub branches and proposed changes, with a full diff before any change reaches a device.

How It Works

The full pipeline, from a high-level fabric design to versioned, deployable configuration:

The AVD + Infrahub pipeline: generate topology, format host vars, run EOS Designs, generate artifacts, and store and version every output in the knowledge graph.

Prerequisites

  • Docker and Docker Compose
  • uv (Python package manager)
  • Python 3.11+
  • PyAVD >= 6.3.0, < 6.4.0 (bundled in the custom Docker image -- no separate install required)

Quick Start

# Install Python dependencies, including PyAVD and the Infrahub SDK
uv sync --all-packages

# Build the custom Infrahub image (extends the base image with PyAVD — run once)
export INFRAHUB_BASE_VERSION=1.11.3
uv run invoke build

# Start all services: Infrahub, Neo4j, PostgreSQL, Redis, RabbitMQ, service portal, Semaphore
uv run invoke start

# Load schemas, UI menu, seed data, register the repository, and load event triggers
uv run invoke load

Open the Infrahub UI at http://localhost:8000 and the service portal at http://localhost:8501.

Then follow Provision Your First Fabric to run the generator chain and reach rendered EOS artifacts.

What You'll See

After invoke load completes and you run the generator chain on a fabric:

  1. Seed data appears in the UI — manufacturers, device types, addressing pools, device templates, two example fabrics (Fabric-L3LS-MultiPod-A, Fabric-L3LS-MultiPod-B) with pods and racks, and seed VLANs are loaded.
  2. FabricGenerator runs — super-spine devices appear on the branch, with loopback and management addresses allocated from pools.
  3. PodGenerator and RackGenerator trigger automatically — spine and leaf devices appear, cabled to their uplinks, with interconnect addresses, BGP ASNs, and node IDs assigned.
  4. AVD generators run — each device's PyAVD host_vars and structured configuration are stored as AvdArtifact graph objects.
  5. Transforms produce artifacts — EOS device configuration, per-device Markdown documentation, fabric documentation, and a cabling plan CSV are available as downloadable artifacts on each device and fabric object.
  6. Propose and review — open a proposed change from the branch; the UI shows a diff of every new object and the rendered artifacts for review before any configuration reaches production.
  7. Deploy to devices — apply the rendered configurations to the fabric through the bundled Ansible runner (Semaphore) or CloudVision (CVP/CVaaS).

What's Included

  • Schemas — 20 schema files covering the full fabric data model:
    • Topology: NetworkFabric, NetworkPod, NetworkDevice, NetworkInterface, NetworkLink
    • IPAM: prefixes and addresses with role tagging (loopback, interconnect, management, server)
    • EVPN: tenants, VRFs, SVIs, L2 VLANs
    • MLAG: domain and peer pool definitions
    • AVD types: AvdArtifact for per-device hostvar and structured config tracking with checksums
  • Generators — six checksum-based, idempotent generators:
    • FabricGenerator, PodGenerator, RackGenerator — device creation, addressing, and cabling
    • GenerateAVDDeviceHostvar — assembles per-device PyAVD input from the source of truth
    • AvdDeviceStructuredConfigGenerator — runs PyAVD to produce structured configuration
    • GenerateServerCabling — handles server attachment
  • Transforms — render structured data into downloadable artifacts:
    • EOS device configuration (via PyAVD, running inside Infrahub workers)
    • Per-device and fabric-level Markdown documentation
    • Cabling plan CSV
    • ANTA test catalogs and on-demand post-deployment validation through Semaphore
    • Computed interface descriptions
  • Seed data — manufacturers, device types, addressing and number pools (loopback, interconnect, management, ASN, node ID), device profiles and templates, two example fabrics with pods and racks, and seed VLANs.
  • Service portal — Streamlit application with guided day-2 workflows:
    • Add network segment (VRF, VLAN, SVI)
    • Provision server into a rack
    • Create EVPN tenant
    • Fabric Design visualization (topology, cabling, settings, EVPN)
  • Stack — Docker Compose extending Infrahub 1.11.3 with PyAVD. Includes Infrahub UI, service portal, Semaphore (bundled Ansible runner for deployment and ANTA validation), and Neo4j.
File What it does
.infrahub.yml Registers all generators, transforms, queries, and artifact definitions with Infrahub
schemas/ YAML schema definitions for the full data model
generators/ Python generators (fabric, pod, rack, AVD hostvars, structured config, server cabling)
transforms/ Python and Jinja2 transforms (EOS config, docs, cabling plan, ANTA catalog, interface descriptions)
objects/ Seed YAML (manufacturers, device types, pools, profiles, templates, fabrics, racks, VLANs)
triggers.yml Event trigger rules wiring schema changes to generator runs
service_catalog/ Streamlit service portal
docker-compose.yml Stack definition; docker-compose.override.yml adds the portal and Semaphore
Dockerfile Custom Infrahub image with PyAVD
tasks.py Invoke task definitions (build, start, stop, load, lint, test)

Note: Brownfield import (modeling an existing fabric and importing configurations via Infrahub Sync) is available in a guided engagement today — it is not yet a self-serve path.

Documentation

The full documentation is under docs/. Key entry points:

Get the stack running Quick Start — prerequisites, install steps, and first load
Provision a fabric end-to-end Provision Your First Fabric — step-by-step walkthrough from seed data to rendered EOS artifacts
Check what's supported Supported Capabilities — capability matrix (supported / partial / not yet)
Run a day-two workflow Add a Network Segment — and the other how-to guides
Understand the generator pipeline Architecture Overview — system components, data model, and generator chain
Understand the AVD pipeline AVD Pipeline Overview — two-phase pipeline, hostvars reference, role mapping
Extend the pipeline Extending the Pipeline — new device roles, transform outputs, schema fields
Debug pipeline issues Debugging the Pipeline — intermediate-file inspection, single-generator re-runs, common failure modes

Community & Support

Related Projects

Project Description
Infrahub The infrastructure data management and automation platform this reference design runs on
Arista AVD Arista Validated Design — the collection and PyAVD engine that render EOS configurations
AVD documentation Upstream AVD reference and PyAVD documentation

About Infrahub

Infrahub is an open source infrastructure data management and automation platform (Apache 2.0), developed by OpsMill. It gives infrastructure and network teams a unified, schema-driven source of truth for all infrastructure data — devices, topology, IP space, configuration — with built-in version control, a generator framework for automation, and native integrations with Git, Ansible, Terraform, and CI/CD pipelines.

About

Infrahub Solution: Arista AVD Integration

Topics

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages