AVD Quickstart Containerlab

Overview

AVD Quickstart Containerlab

WARNING This repository is still under construction. It's fully functional, but has number of limitations. For example:

  • README is still work-in-progress
  • Lab configuration and adresses are hardcoded and have to be redefined in many different files if you setup is different. That will be simplified before the final release.
  • Some workflow and code optimization required.

Overview

This repository helps to build your own AVD test lab based on Containerlab in minutes. The main target is to provide an easy way to build the environment to learn and test AVD automation. The lab can be used together with CVP VM, but it's not mandatory.

WARNING: if CVP VM is part of the lab, make sure that it's reachable and credentials configured on CVP are matching the lab.

Release Notes:

  • 0.1
    • initial release with many shortcuts
  • 0.2
    • Fix bugs.
    • Improve lab topology.
    • Improve lab workflow.
    • Add EVPN AA scenario.

Lab Prerequisites

The lab requires a single Linux host (Ubuntu server recommended) with Docker and Containerlab installed. It's possible to run Containerlab on MacOS, but that was not tested. Dedicated Linux machine is currently the preferred option.

To test AVD with CVP, KVM can be installed on the same host. To install KVM, check this guide or any other resource available on internet. Once KVM is installed, you can use one of the following repositories to install CVP:

It is definitely possible to run CVP on a dedicated host and a different hypervisor as long as it can be reached by cLab devices.

NOTE: to use CVP VM with container lab it's not required to recompile Linux core. That's only required if you plan to use vEOS on KVM for you lab setup.

The lab setup diagram:

lab diagram

How To Use The Lab

  1. Clone this repository to your lab host: git clone https://github.com/arista-netdevops-community/avd-quickstart-containerlab.git
  2. It is recommended to remove git remote as changes are not supposed to be pushed to the origin: git remote remove origin
  3. Change to the lab directory: cd avd-quickstart-containerlab
  4. Before running the lab it is recommended to create a dedicated git branch for you lab experiments to keep original branch clean.
  5. Check makefile help for the list of commands available: make help
[email protected]:~/avd-quickstart-containerlab$ make help
avd_build_cvp                  build configs and configure switches via eAPI
avd_build_eapi                 build configs and configure switches via eAPI
build                          Build docker image
clab_deploy                    Deploy ceos lab
clab_destroy                   Destroy ceos lab
clab_graph                     Build lab graph
help                           Display help message
inventory_evpn_aa              onboard devices to CVP
inventory_evpn_mlag            onboard devices to CVP
onboard                        onboard devices to CVP
rm                             Remove all containerlab directories
run                            run docker image. This requires cLab "custom_mgmt" to be present
  1. If you don't have cEOS image on your host yet, download it from arista.com and import. Make sure that image name is matching the parameters defined in CSVs_EVPN_AA/clab.yml or CSVs_EVPN_MLAG/clab.yml
  2. Use make build to build avd-quickstart:latest container image. If that was done earlier and the image already exists, you can skip this step.
  3. Run make inventory_evpn_aa or make inventory_evpn_mlag to build the inventory for EVPN AA or MLAG scenario. Ideally AVD inventroy must be a different repository, but for simplicity script will generate inventory in the current directory.
  4. Review the inventory generated by avd-quickstart. You can optionally git commit the changes.
  5. Run make clab_deploy to build the containerlab. Wait until the deployment will finish.
  6. Execute make run to run avd-quickstart container.
  7. If CVP VM is used in the lab, onboard cLab switches with make onboard. Once the script behind this shortcut wil finish, devices will appear in the CVP inventory.
  8. To execute Ansible AVD playbook, use make avd_build_eapi or make avd_build_cvp shortcuts. That will execute playbook/fabric-deploy-eapi.yml or playbook/fabric-deploy-cvp.yml.
  9. Run make avd_validate to execute AVD state validation playbook playbooks/validate-states.yml.
  10. Run make avd_snapshot if you want to collect a network snapshot with playbooks/snapshot.yml.
  11. Connect to hosts and switches and run some pings, show commands, etc. To connect to a lab device, you can type it's hostname in the container:

connect to a device from the container

NOTE: device hostnames are currently hardcoded inside the avd-quickstart container. If you have customized the inventory, ssh to the device manually. That will be improved in the coming versions.

You can optionally git commit the changes and start playing with the lab. Use CSVs to add some VLANs, etc. for example. Re-generate the inventory and check how the AVD repository data changes.

How To Destroy The Lab

  1. Exit the avd-quickstart container by typing exit
  2. Execute make clab_destroy to destroy the containerlab.
  3. Execute make rm to delete the generated AVD inventory.
Owner
Carl Buchmann
Systems Engineer @ Arista Networks Passionate about designing networks and automating them!
Carl Buchmann
My solutions for Stanford University course CS224W: Machine Learning with Graphs Fall 2021 colabs (GNN, GAT, GraphSAGE, GCN)

machine-learning-with-graphs My solutions for Stanford University course CS224W: Machine Learning with Graphs Fall 2021 colabs Course materials can be

Marko Njegomir 7 Dec 14, 2022
Towards Flexible Blind JPEG Artifacts Removal (FBCNN, ICCV 2021)

Towards Flexible Blind JPEG Artifacts Removal (FBCNN, ICCV 2021)

Jiaxi Jiang 282 Jan 02, 2023
Pytorch implementation of

EfficientTTS Unofficial Pytorch implementation of "EfficientTTS: An Efficient and High-Quality Text-to-Speech Architecture"(arXiv). Disclaimer: Somebo

Liu Songxiang 109 Nov 16, 2022
[ICML 2021, Long Talk] Delving into Deep Imbalanced Regression

Delving into Deep Imbalanced Regression This repository contains the implementation code for paper: Delving into Deep Imbalanced Regression Yuzhe Yang

Yuzhe Yang 568 Dec 30, 2022
Additional environments compatible with OpenAI gym

Decentralized Control of Quadrotor Swarms with End-to-end Deep Reinforcement Learning A codebase for training reinforcement learning policies for quad

Zhehui Huang 40 Dec 06, 2022
An implementation of a discriminant function over a normal distribution to help classify datasets.

CS4044D Machine Learning Assignment 1 By Dev Sony, B180297CS The question, report and source code can be found here. Github Repo Solution 1 Based on t

Dev Sony 6 Nov 09, 2021
Predicting Semantic Map Representations from Images with Pyramid Occupancy Networks

This is the code associated with the paper Predicting Semantic Map Representations from Images with Pyramid Occupancy Networks, published at CVPR 2020.

Thomas Roddick 219 Dec 20, 2022
I explore rock vs. mine prediction using a SONAR dataset

I explore rock vs. mine prediction using a SONAR dataset. Using a Logistic Regression Model for my prediction algorithm, I intend on predicting what an object is based on supervised learning.

Jeff Shen 1 Jan 11, 2022
Image-to-image translation with conditional adversarial nets

pix2pix Project | Arxiv | PyTorch Torch implementation for learning a mapping from input images to output images, for example: Image-to-Image Translat

Phillip Isola 9.3k Jan 08, 2023
Election Exit Poll Prediction and U.S.A Presidential Speech Analysis using Machine Learning

Machine_Learning Election Exit Poll Prediction and U.S.A Presidential Speech Analysis using Machine Learning This project is based on 2 case-studies:

Avnika Mehta 1 Jan 27, 2022
automatic color-grading

color-matcher Description color-matcher enables color transfer across images which comes in handy for automatic color-grading of photographs, painting

hahnec 168 Jan 05, 2023
This is the first released system towards complex meters` detection and recognition, which is implemented by computer vision techniques.

A three-stage detection and recognition pipeline of complex meters in wild This is the first released system towards detection and recognition of comp

Yan Shu 19 Nov 28, 2022
Versatile Generative Language Model

Versatile Generative Language Model This is the implementation of the paper: Exploring Versatile Generative Language Model Via Parameter-Efficient Tra

Zhaojiang Lin 17 Dec 02, 2022
A pytorch reproduction of { Co-occurrence Feature Learning from Skeleton Data for Action Recognition and Detection with Hierarchical Aggregation }.

A PyTorch Reproduction of HCN Co-occurrence Feature Learning from Skeleton Data for Action Recognition and Detection with Hierarchical Aggregation. Ch

Guyue Hu 210 Dec 31, 2022
Bottom-up attention model for image captioning and VQA, based on Faster R-CNN and Visual Genome

bottom-up-attention This code implements a bottom-up attention model, based on multi-gpu training of Faster R-CNN with ResNet-101, using object and at

Peter Anderson 1.3k Jan 09, 2023
Prototypical Networks for Few shot Learning in PyTorch

Prototypical Networks for Few shot Learning in PyTorch Simple alternative Implementation of Prototypical Networks for Few Shot Learning (paper, code)

Orobix 835 Jan 08, 2023
The Agriculture Domain of ERPNext comes with features to record crops and land

Agriculture The Agriculture Domain of ERPNext comes with features to record crops and land, track plant, soil, water, weather analytics, and even trac

Frappe 21 Jan 02, 2023
The official repo for OC-SORT: Observation-Centric SORT on video Multi-Object Tracking. OC-SORT is simple, online and robust to occlusion/non-linear motion.

OC-SORT Observation-Centric SORT (OC-SORT) is a pure motion-model-based multi-object tracker. It aims to improve tracking robustness in crowded scenes

Jinkun Cao 325 Jan 05, 2023
Provably Rare Gem Miner.

Provably Rare Gem Miner just another random project by yoyoismee.eth useful link main site market contract useful thing you should know read contract

34 Nov 22, 2022
Discretized Integrated Gradients for Explaining Language Models (EMNLP 2021)

Discretized Integrated Gradients for Explaining Language Models (EMNLP 2021) Overview of paths used in DIG and IG. w is the word being attributed. The

INK Lab @ USC 17 Oct 27, 2022