Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions INSTALLATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ This document explain how to customize demo information and how to setup this en
- A network topology:
- Demo is based on a 2 spines / 4 leafs running on GNS3
- Any physical or virtual topology with oob connected to CVP should work.
- A python environmentwith CloudVision access.
- A python environment with CloudVision access.

![Lab Topology](data/lab-topology.png)

Expand Down Expand Up @@ -77,14 +77,16 @@ $ docker run --rm -it \
# Makefile approach
$ make install
# Manual installation
$ ansible-galaxy collection install arista.avd:==2.0.0
$ ansible-galaxy collection install arista.cvp:==2.1.2
$ ansible-galaxy collection install arista.avd:==4.8.0
$ ansible-galaxy collection install arista.cvp:==3.10.0
```

## Configure DHCP server on CloudVision

In this scenario, we use CloudVision (CV) as ZTP server to provision devices and register them onto CV.

>Note: This is useful in a lab setting, but this is not a TAC supported configuration.

Once you get mac-address of your switches, edit file `/etc/dhcp/dhcpd.conf` in CloudVision. In this scenario, CV use following address to connect to devices: `10.255.0.1`

If CVP has not been configured to activate ZTP services, it is higly recommended to follow [these steps](https://www.arista.com/en/cg-cv/cv-dhcp-service-for-zero-touch-provisioning-ztp-setup)
Expand Down Expand Up @@ -288,6 +290,6 @@ You must use same user on CVP and EOS for the demo.

```yaml
# Cloud Vision server information
cvp_instance_ip: 10.255.0.1
cvp_ingestauth_key: ''
cvp_instance_ips:
- 10.255.0.1
```
36 changes: 27 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,15 @@ CONTAINER ?= avdteam/base:3.8-edge
VSCODE_CONTAINER ?= avdteam/vscode:latest
VSCODE_PORT ?= 8080
HOME_DIR = $(shell pwd)
AVD_COLLECTION_VERSION ?= 3.1.0
CVP_COLLECTION_VERSION ?= 3.2.0
AVD_COLLECTION_VERSION ?= 4.8.0
CVP_COLLECTION_VERSION ?= 3.10.1
ANSIBLE_ARGS ?=
ANSIBLE_VAULT_PASSWORD_FILE ?= ./.vault_passwd
HTTPS_PROXY ?=
PYTHON ?= python3

# This is lazy. Evaluated when used.
ARISTA_AVD_DIR=$(shell ansible-galaxy collection list arista.avd --format yaml | grep $(AVD_COLLECTION_VERSION) -B2 | head -1 | cut -d: -f1)

help: ## Display help message
@grep -E '^[0-9a-zA-Z_-]+\.*[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
Expand All @@ -14,38 +21,49 @@ help: ## Display help message

.PHONY: build
build: ## Run ansible playbook to build EVPN Fabric configuration.
ansible-playbook playbooks/dc1-fabric-deploy-cvp.yml --tags build
ansible-playbook playbooks/dc1-fabric-deploy-cvp.yml --tags build $(ANSIBLE_ARGS)

.PHONY: provision
provision: ## Run ansible playbook to deploy EVPN Fabric.
ansible-playbook playbooks/dc1-fabric-deploy-cvp.yml --tags provision
ansible-playbook playbooks/dc1-fabric-deploy-cvp.yml --tags provision $(ANSIBLE_ARGS)

.PHONY: deploy
deploy: ## Run ansible playbook to deploy EVPN Fabric.
ansible-playbook playbooks/dc1-fabric-deploy-cvp.yml --extra-vars "execute_tasks=true" --tags "build,provision,apply"
ansible-playbook playbooks/dc1-fabric-deploy-cvp.yml --extra-vars "execute_tasks=true" --tags "build,provision,apply" $(ANSIBLE_ARGS)

.PHONY: reset
reset: ## Run ansible playbook to reset all devices.
ansible-playbook playbooks/dc1-fabric-reset-cvp.yml
ansible-playbook playbooks/dc1-fabric-reset-cvp.yml $(ANSIBLE_ARGS)

.PHONY: ztp
ztp: ## Configure ZTP server
ansible-playbook playbooks/dc1-ztp-configuration.yml
ansible-playbook playbooks/dc1-ztp-configuration.yml $(ANSIBLE_ARGS)

.PHONY: configlet-upload
configlet-upload: ## Upload configlets available in configlets/ to CVP.
ansible-playbook playbooks/dc1-upload-configlets.yml
ansible-playbook playbooks/dc1-upload-configlets.yml $(ANSIBLE_ARGS)

.PHONY: install-git
install-git: ## Install Ansible collections from git
git clone --depth 1 --branch v$(AVD_COLLECTION_VERSION) https://github.com/aristanetworks/ansible-avd.git
git clone --depth 1 --branch v$(CVP_COLLECTION_VERSION) https://github.com/aristanetworks/ansible-cvp.git
pip3 install -r ansible-avd/development/requirements.txt
$(PYTHON) -m pip install -r ${ARISTA_AVD_DIR}/arista/avd/requirements.txt

.PHONY: install
install: ## Install Ansible collections
ifndef HTTPS_PROXY
echo installing requirements from: ${ARISTA_AVD_DIR}
$(PYTHON) -m pip install ansible
ansible-galaxy collection install arista.avd:==${AVD_COLLECTION_VERSION}
ansible-galaxy collection install arista.cvp:==${CVP_COLLECTION_VERSION}
$(PYTHON) -m pip install -r ${ARISTA_AVD_DIR}/arista/avd/requirements.txt
else
echo installing requirements from: ${ARISTA_AVD_DIR}
HTTPS_PROXY=$(HTTPS_PROXY) $(PYTHON) -m pip install ansible
HTTPS_PROXY=$(HTTPS_PROXY) ansible-galaxy collection install arista.avd:==${AVD_COLLECTION_VERSION}
HTTPS_PROXY=$(HTTPS_PROXY) ansible-galaxy collection install arista.cvp:==${CVP_COLLECTION_VERSION}
HTTPS_PROXY=$(HTTPS_PROXY) $(PYTHON) -m pip install -r ${ARISTA_AVD_DIR}/arista/avd/requirements.txt
endif

.PHONY: uninstall
uninstall: ## Remove collection from ansible
Expand Down
Loading