Skip to content

Commit

Permalink
AVD Data Models for EVPN/VXLAN Deployment Guide - Domain A (#61)
Browse files Browse the repository at this point in the history
* tl evpnvxlan domain a initial commit

* add evpn l2 gw

* domain a evpn gw configs

* evpn gw config update

* update evpn gw peer group config

* domain a config avd config updates

* update evpn multicast avd config domain a

* dhcp relay and option 82

* post deployment config backups

* update techlib-domain-a container

* techlib-domain-a-avd

* update techlib domain a lab

* testing

* testing dev container

* testing

* move avd dir for techlib domain a

* update techlib domain a container

* update documentation based on avd 5.0.0

* remove anta reports - consolidate makefile

* lab testing

* add graphite

* test graphite link

* update lab topo link

* postcreate script in domain a lab

* update readme in tl domain a lab

* update postcreate script tl domain a

* fix postcreate script tl domain a

* fix postcreate.sh

* update readme with important note

* update readme in tl domain a lab

* update postcreate script tl domain a lab

* update eos and container image

* update eos image

* remove avd generated doc and config files

* change avd validation mode to error

* setting ansible validation mode to warning

* add backbone nodes to domain a lab

* remove domain a directory

* update domain a lab container

* update domain a lab container

* update domain a lab readme
  • Loading branch information
mitchv85 authored Jan 5, 2025
1 parent 2adb390 commit 2a34470
Show file tree
Hide file tree
Showing 37 changed files with 3,012 additions and 1,279 deletions.
7 changes: 3 additions & 4 deletions .devcontainer/techlib-vxlan-domain-a/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
{
// "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/lab-base:python3.11-avd-v4.10.2-clab0.57.5-rev9",
"image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/lab-base:python3.11-avd-v4.10.2-clab0.57.5-rev1.0",
"image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/lab-base:python3.11-avd-v5.1.0-clab0.60.1-rev1.1",
// containerEnv set the variables applied to entire container
"containerEnv": {
"ARISTA_TOKEN": "${localEnv:ARTOKEN}",
"CONTAINERWSF": "${containerWorkspaceFolder}",
"GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}",
"CEOS_LAB_VERSION": "4.32.2.1F"
"CEOS_LAB_VERSION": "4.32.3M"
},
"secrets": {
"ARTOKEN": {
Expand All @@ -22,4 +21,4 @@
"postCreateCommand": "postCreate.sh; make start; make inspect",
"workspaceMount": "source=${localWorkspaceFolder}/labs/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
"workspaceFolder": "/techlib-vxlan-domain-a"
}
}
5 changes: 4 additions & 1 deletion labs/techlib-vxlan-domain-a/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ avd_inventory/config_backup/
# gitignore downloaded cEOS-lab images
cEOS-lab-*

# ingnore images and other files not to be uploaded to GitHub
# ignore images and other files not to be uploaded to GitHub
.gitignored/*
!.gitignored/.gitkeep

# ignore AVD config_backups
avd/config_backup
12 changes: 12 additions & 0 deletions labs/techlib-vxlan-domain-a/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,15 @@ inspect: ## Inspect ceos lab
@echo ""
@echo "You can check the lab status, hostnames and management addresses above."
@echo "To connect to a lab device use \`ssh admin@<hostname>\` and password \`admin\`."

.PHONY: build
build: ## Build Configs
ansible-playbook avd/playbooks/build.yml -i avd/inventory.yml -e "target_hosts=DOMAIN_A_FABRIC"

.PHONY: deploy
deploy: ## Deploy Configs via eAPI
ansible-playbook avd/playbooks/deploy.yml -i avd/inventory.yml -e "target_hosts=DOMAIN_A_FABRIC"

.PHONY: validate
validate: ## Validate Fabric
ansible-playbook avd/playbooks/validate.yml -i avd/inventory.yml -e "target_hosts=DOMAIN_A_FABRIC"
114 changes: 102 additions & 12 deletions labs/techlib-vxlan-domain-a/README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,113 @@
# TechLibrary EVPN Domain-A Lab
# Arista's Tech Library EVPN/VXLAN Domain A Lab

This lab is tested for:
## Overview
This lab has been validated as fully functional with:

cEOS-lab version: 4.32.2.1F
Codespace Container Size
CPUs: 16
memory: 64 GB
storage: 128 GB
- cEOS-lab: 4.32.3M
- AVD: 5.1.0
- ContainerLab: 0.60.1

Last reviewed: 02/10/2024
## Quick Links

To inspect the lab details use `make inspect` shortcut. This will list the host names and management addresses for all lab devices.
To connect to any device use:
[Interactive Lab Topology](#interactive-lab-toplogy)

[Building Configurations](#building-configurations)

[Deploying Configurations](#deploying-configurations)

[Validating the Topology](#validating-the-topology)

[Topology Status](#topology-status)

[Connecting to Nodes via the Terminal](#connecting-to-nodes-via-terminal)

[Starting the Topology](#starting-the-topology)

[Stopping the Topology](#stopping-the-topology)

## Interactive Lab Toplogy

An interactive topology is available via the link below, and can be used to access the nodes via web SSH. All nodes have a username of `admin` and password of `admin`

> [!IMPORTANT]
> Please wait until the postCreate.sh script completes before opening the interactive lab topology link below
[Interactive Lab Topology](https://{{gh.codespace_name}}-8080.app.github.dev/graphite)

## Building Configurations

Pre-built AVD data models are located in the `avd/group_vars` directory. These data models will render configurations for the nodes in Domain A as shown in the EVPN/VXLAN Deployment Guide.

Issuing the below command at the terminal will render all configuration and documentation based on the pre-built data models.

```bash
make build
```

> [!TIP]
> Be sure to explore and experiment with the data models! More information on AVD can be found at https://avd.arista.com.
## Deploying Configurations

Once rendered, the AVD-generated configurations can be deployed to the nodes by issuing the below command at the terminal

```bash
make deploy
```

## Validating the Topology

The [Arista Network Test Automation (ANTA)](https://anta.arista.com/) framework can be used to validate that the topology is built and operational as defined in the AVD data models.

Issue the below command at the terminal will initiate the validation testing.

```
make validate
```

> [!TIP]
> ANTA has an extensive and continually growing [test catalog](https://anta.arista.com/stable/api/tests/). Be sure to explore and test with the available options!
## Additional Tasks

### Topology Status

The current status of the lab environment can be retrieved at any time by issuing the below command at the terminal.

```bash
make inspect
```

This will list the host names and management addresses for all lab devices.

### Connecting to Nodes via Terminal

As an alternative to the [Interactive Lab Topology](https://{{gh.codespace_name}}-8080.app.github.dev/graphite), all nodes can be accessed via SSH directly from the terminal as shown below.

```bash
# the password is `admin`
ssh admin@<a-lab-device-hostname>
```

To check connectivity, ssh to any host and use `pingcheck ipv4_vrf_prod` or `pingcheck ipv4_vrf_dev` to start fping to the lab hosts. You have to wait a few minutes after the lab start for ping to be successful.
### Stopping the topology

If needed, the topology can be stopped by issuing the below command at the terminal:

```
make stop
```

### Starting the topology

> [!IMPORTANT]
> The topology is automatically started upon the initial launch of the Codespace lab.
If the topology is stopped for any reason, either manually or automatically due to the user's configured Codespace idle timeout value, it can be restarted by issuing the below command at the terminal:

```
make start
```

# Enjoy the lab!

Enjoy the lab!
Last reviewed: January 4th, 2025
4 changes: 4 additions & 0 deletions labs/techlib-vxlan-domain-a/ansible.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[defaults]
forks = 5
inventory = inventory.yml
jinja2_extensions = jinja2.ext.loopcontrols,jinja2.ext.do,jinja2.ext.i18n
87 changes: 87 additions & 0 deletions labs/techlib-vxlan-domain-a/avd/group_vars/DOMAIN_A_ENDPOINTS.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---

########################################################
# Port Profiles #
########################################################
port_profiles:
- profile: PROF-BLUE-MLAG
mode: access
spanning_tree_portfast: edge
spanning_tree_bpduguard: true
vlans: 10
port_channel:
mode: active

- profile: PROF-ORANGE-MLAG
mode: access
spanning_tree_portfast: edge
spanning_tree_bpduguard: true
vlans: 30
port_channel:
mode: active

- profile: PROF-ORANGE-SINGLE-HOMED
mode: access
spanning_tree_portfast: edge
spanning_tree_bpduguard: true
vlans: 30

- profile: PROF-YELLOW-SINGLE-HOMED
mode: access
spanning_tree_portfast: edge
spanning_tree_bpduguard: true
vlans: 50

- profile: PROF-BROWN-MLAG
mode: access
spanning_tree_portfast: edge
spanning_tree_bpduguard: true
vlans: 70
port_channel:
mode: active

########################################################
# End hosts #
########################################################
servers:
- name: HostA1
adapters:
- endpoint_ports: [eth1, eth2]
switch_ports: [Ethernet7, Ethernet7]
switches: [A-LEAF1, A-LEAF2]
profile: PROF-BLUE-MLAG

- name: HostA2
adapters:
- endpoint_ports: [eth1, eth2]
switch_ports: [Ethernet8, Ethernet8]
switches: [A-LEAF1, A-LEAF2]
profile: PROF-ORANGE-MLAG

- name: HostA3
adapters:
- endpoint_ports: [eth1]
switch_ports: [Ethernet7]
switches: [A-LEAF3]
profile: PROF-YELLOW-SINGLE-HOMED

- name: HostA4
adapters:
- endpoint_ports: [eth1, eth2]
switch_ports: [Ethernet8, Ethernet8]
switches: [A-LEAF3, A-LEAF4]
profile: PROF-BLUE-MLAG

- name: HostA5
adapters:
- endpoint_ports: [eth1]
switch_ports: [Ethernet7]
switches: [A-LEAF4]
profile: PROF-ORANGE-SINGLE-HOMED

- name: HostA6
adapters:
- endpoint_ports: [eth1, eth2]
switch_ports: [Ethernet7, Ethernet7]
switches: [A-LEAF5, A-LEAF6]
profile: PROF-BROWN-MLAG
Loading

0 comments on commit 2a34470

Please sign in to comment.