├── .npmignore
├── .gitignored
└── .gitkeep
├── docs
├── assets
│ ├── img
│ │ ├── avd-single-dc-l3ls
│ │ │ └── .gitkeep
│ │ ├── playground-small-evpn-mlag
│ │ │ └── .gitkeep
│ │ ├── account_settings.png
│ │ ├── codespaces-secrets.png
│ │ ├── topos
│ │ │ ├── min-l3ls-aa.png
│ │ │ ├── min-l3ls-mlag.png
│ │ │ ├── small-l3ls-aa.png
│ │ │ └── small-l3ls-mlag.png
│ │ ├── pexels-ann-h-7186206.jpg
│ │ ├── pexels-danne-555709.jpg
│ │ ├── avd-avd-extended-workshop--part-1
│ │ │ └── atd-l3ls.png
│ │ └── clab-build-containerlab-with-ceos
│ │ │ ├── ceos-download.png
│ │ │ └── min-l3ls-mlag.png
│ ├── data
│ │ └── github.yml
│ └── stylesheets
│ │ └── extra.css
├── credits.md
├── construction-area.md
└── avd
│ └── workshops
│ ├── avd-extended-workshop
│ └── avd-extended-workshop.md
│ └── avd-extended-workshop-part-1
│ └── avd-extended-workshop-part-1.md
├── .cc
├── lab_host_inventory.csv
├── {{cookiecutter.__demo_slug}}
│ ├── docs
│ │ └── assets
│ │ │ └── img
│ │ │ └── {{cookiecutter.__demo_slug}}
│ │ │ └── .gitkeep
│ ├── demos
│ │ └── {{cookiecutter.__demo_slug}}
│ │ │ ├── clab
│ │ │ ├── sn
│ │ │ │ └── {% for hostname in cookiecutter.__lab.lab_inventory %}.txt.jinja
│ │ │ ├── init-configs
│ │ │ │ ├── {% for hostname in cookiecutter.__lab.lab_host_inventory %}.cfg.jinja
│ │ │ │ └── {% for hostname in cookiecutter.__lab.lab_inventory %}.cfg.jinja
│ │ │ └── topology.clab.yml.jinja
│ │ │ ├── Makefile.jinja
│ │ │ └── README.md.jinja
│ ├── containers
│ │ └── {{cookiecutter.__demo_slug}}
│ │ │ └── .devcontainer
│ │ │ ├── addAliases.sh.jinja
│ │ │ ├── Dockerfile.jinja
│ │ │ ├── postCreate.sh.jinja
│ │ │ └── devcontainer.json.jinja
│ └── slides
│ │ └── {{cookiecutter.__demo_slug}}.md.jinja
├── lab_inventory.csv
├── lab_cabling_plan.csv
├── hooks
│ └── post_gen_project.sh.jinja
└── cookiecutter.json
├── CSVs
├── minimalistic-l3ls-aa
│ ├── lab_host_inventory.csv
│ ├── lab_inventory.csv
│ └── lab_cabling_plan.csv
├── minimalistic-l3ls-mlag
│ ├── lab_host_inventory.csv
│ ├── lab_inventory.csv
│ └── lab_cabling_plan.csv
├── small-l3ls-aa
│ ├── lab_host_inventory.csv
│ ├── lab_inventory.csv
│ └── lab_cabling_plan.csv
├── small-l3ls-mlag
│ ├── lab_host_inventory.csv
│ ├── lab_inventory.csv
│ └── lab_cabling_plan.csv
└── atd-l3ls
│ ├── lab_host_inventory.csv
│ ├── lab_inventory.csv
│ └── lab_cabling_plan.csv
├── slides
└── img
│ ├── lab.png
│ ├── atd-l3ls.png
│ ├── atd-topo.png
│ ├── cv-logo.png
│ ├── avd-logo.webp
│ ├── code-stable.png
│ ├── demo-setup.png
│ ├── github-mark.png
│ ├── Ansible_Logo.png
│ ├── arista-switch.png
│ ├── demo-workflow.png
│ ├── vscode-search.png
│ ├── Git-Icon-1788C.png
│ ├── Git-Icon-Black.png
│ ├── Git-Icon-White.png
│ ├── Git-Logo-1788C.png
│ ├── Git-Logo-2Color.png
│ ├── Git-Logo-Black.png
│ ├── Git-Logo-White.png
│ ├── atd-dual-dc-left.png
│ ├── github-billing.png
│ ├── github-merge-pr.png
│ ├── start-codespaces.jpg
│ ├── ansible_variables1.png
│ ├── atd-coder-password.png
│ ├── codespaces-open-in.jpg
│ ├── github-mark-white.png
│ ├── why_devcontainers.png
│ ├── github-delete-branch.png
│ ├── leonardo-yip-unsplash.jpg
│ ├── pexels-ann-h-7186206.jpg
│ ├── pexels-danne-555709.jpg
│ ├── pexels-pixabay-159591.jpg
│ ├── pexels-pixabay-207580.jpg
│ ├── pexels-pixabay-356043.jpg
│ ├── architecture-containers.png
│ ├── atd-access-lab-topology.png
│ ├── github-compare-and-pull.png
│ ├── commit-atd-passwd-changes.png
│ ├── github-open-a-pull-request.png
│ ├── import-github-repository.png
│ ├── 01-primary-blue-docker-logo.png
│ ├── github-review-files-changed.png
│ ├── provisioning-building-blocks.png
│ ├── atd-click-programmability-ide.jpg
│ ├── import-github-repository-step-2.png
│ ├── pexels-suzy-hazelwood-1226398.jpg
│ ├── pexels-valeriia-miller-3020919.jpg
│ ├── pexels-realtoughcandycom-11035544.jpg
│ ├── pexels-startup-stock-photos-7376.jpg
│ ├── pexels-towfiqu-barbhuiya-11412596.jpg
│ ├── import-github-change-default-branch.png
│ ├── pexels-suzy-hazelwood-1226398 copy.jpg
│ ├── clab-build-containerlab-with-ceos
│ ├── ceos-download.png
│ └── min-l3ls-mlag.png
│ └── pexels-tara-winstead-8386732-modified-stackoverflow.jpg
├── .devcontainer
├── requirements.txt
├── Dockerfile
├── playground-small-evpn-mlag
│ └── devcontainer.json
├── avd-extended-workshop-part-1
│ └── devcontainer.json
├── avd-avd-extended-workshop--part-1
│ └── devcontainer.json
├── clab-build-containerlab-with-ceos
│ └── devcontainer.json
├── devcontainer.json
├── cvaas-cvaas-and-avd-demo--evpn-aa
│ └── devcontainer.json
├── cvaas-cvaas-and-avd-demo--evpn-mlag
│ └── devcontainer.json
├── cvaas-cvaas-and-avd-demo--evpn-aa-small
│ └── devcontainer.json
├── cvaas-cvaas-and-avd-demo--evpn-mlag-small
│ └── devcontainer.json
└── avd-single-dc-l3ls
│ └── devcontainer.json
├── demos
├── avd-single-dc-l3ls
│ ├── clab
│ │ ├── sn
│ │ │ ├── dc1-leaf1a.txt
│ │ │ ├── dc1-leaf1b.txt
│ │ │ ├── dc1-leaf1c.txt
│ │ │ ├── dc1-leaf2a.txt
│ │ │ ├── dc1-leaf2b.txt
│ │ │ ├── dc1-leaf2c.txt
│ │ │ ├── dc1-spine1.txt
│ │ │ └── dc1-spine2.txt
│ │ └── init-configs
│ │ │ ├── dc1-leaf1a.cfg
│ │ │ ├── dc1-leaf1b.cfg
│ │ │ ├── dc1-leaf1c.cfg
│ │ │ ├── dc1-leaf2a.cfg
│ │ │ ├── dc1-leaf2b.cfg
│ │ │ ├── dc1-leaf2c.cfg
│ │ │ ├── dc1-spine1.cfg
│ │ │ ├── dc1-spine2.cfg
│ │ │ ├── dc1-leaf1-server1.cfg
│ │ │ └── dc1-leaf2-server1.cfg
│ ├── README.md
│ └── Makefile
├── playground-small-evpn-mlag
│ ├── clab
│ │ ├── sn
│ │ │ ├── l01.txt
│ │ │ ├── l02.txt
│ │ │ ├── s01.txt
│ │ │ └── s02.txt
│ │ ├── init-configs
│ │ │ ├── h01.cfg
│ │ │ ├── l01.cfg
│ │ │ ├── l02.cfg
│ │ │ ├── s01.cfg
│ │ │ └── s02.cfg
│ │ └── topology.clab.yml
│ ├── test.rest
│ └── README.md
├── clab-build-containerlab-with-ceos
│ ├── clab
│ │ ├── sn
│ │ │ ├── l01.txt
│ │ │ ├── l02.txt
│ │ │ ├── s01.txt
│ │ │ └── s02.txt
│ │ ├── interface_mapping.json
│ │ ├── init-configs
│ │ │ └── h01.cfg
│ │ └── topology.clab.yml
│ ├── ansible.cfg
│ ├── Makefile
│ ├── README.md
│ ├── topology.clab.yml
│ └── playbooks
│ │ └── check_the_lab.yml
├── cvaas-cvaas-and-avd-demo--evpn-aa
│ ├── clab
│ │ ├── sn
│ │ │ ├── l01.txt
│ │ │ ├── l02.txt
│ │ │ ├── l03.txt
│ │ │ ├── l04.txt
│ │ │ ├── s01.txt
│ │ │ └── s02.txt
│ │ └── init-configs
│ │ │ ├── l01.cfg
│ │ │ ├── l02.cfg
│ │ │ ├── l03.cfg
│ │ │ ├── l04.cfg
│ │ │ ├── s01.cfg
│ │ │ └── s02.cfg
│ ├── avd_inventory
│ │ ├── ansible.cfg
│ │ ├── playbooks
│ │ │ ├── avd_deploy.yml
│ │ │ ├── avd_validate.yml
│ │ │ ├── avd_build.yml
│ │ │ └── avd_deploy_cvp.yml
│ │ ├── group_vars
│ │ │ ├── CV_SERVERS.yml
│ │ │ ├── AVD_FABRIC_TENANTS.yml
│ │ │ ├── AVD_FABRIC_ENDPOINTS.yml
│ │ │ └── all.yml
│ │ └── inventory.yml
│ ├── README.md
│ └── Makefile
├── cvaas-cvaas-and-avd-demo--evpn-mlag
│ ├── clab
│ │ ├── sn
│ │ │ ├── l01.txt
│ │ │ ├── l02.txt
│ │ │ ├── l03.txt
│ │ │ ├── l04.txt
│ │ │ ├── s01.txt
│ │ │ └── s02.txt
│ │ └── init-configs
│ │ │ ├── l01.cfg
│ │ │ ├── l02.cfg
│ │ │ ├── l03.cfg
│ │ │ ├── l04.cfg
│ │ │ ├── s01.cfg
│ │ │ └── s02.cfg
│ ├── avd_inventory
│ │ ├── ansible.cfg
│ │ ├── playbooks
│ │ │ ├── avd_deploy.yml
│ │ │ ├── avd_validate.yml
│ │ │ ├── avd_build.yml
│ │ │ └── avd_deploy_cvp.yml
│ │ ├── group_vars
│ │ │ ├── CV_SERVERS.yml
│ │ │ ├── AVD_FABRIC_ENDPOINTS.yml
│ │ │ ├── AVD_FABRIC_TENANTS.yml
│ │ │ └── all.yml
│ │ └── inventory.yml
│ ├── README.md
│ └── Makefile
├── avd-avd-extended-workshop--part-1
│ ├── clab
│ │ ├── sn
│ │ │ ├── dc1-leaf1a.txt
│ │ │ ├── dc1-leaf1b.txt
│ │ │ ├── dc1-leaf1c.txt
│ │ │ ├── dc1-leaf2a.txt
│ │ │ ├── dc1-leaf2b.txt
│ │ │ ├── dc1-leaf2c.txt
│ │ │ ├── dc1-spine1.txt
│ │ │ └── dc1-spine2.txt
│ │ └── init-configs
│ │ │ ├── dc1-leaf1a.cfg
│ │ │ ├── dc1-leaf1b.cfg
│ │ │ ├── dc1-leaf1c.cfg
│ │ │ ├── dc1-leaf2a.cfg
│ │ │ ├── dc1-leaf2b.cfg
│ │ │ ├── dc1-leaf2c.cfg
│ │ │ ├── dc1-spine1.cfg
│ │ │ ├── dc1-spine2.cfg
│ │ │ ├── dc1-leaf1-server1.cfg
│ │ │ └── dc1-leaf2-server1.cfg
│ ├── README.md
│ └── Makefile
├── cvaas-cvaas-and-avd-demo--evpn-aa-small
│ ├── clab
│ │ ├── sn
│ │ │ ├── l01.txt
│ │ │ ├── l02.txt
│ │ │ ├── s01.txt
│ │ │ └── s02.txt
│ │ ├── init-configs
│ │ │ ├── l01.cfg
│ │ │ ├── l02.cfg
│ │ │ ├── s01.cfg
│ │ │ └── s02.cfg
│ │ └── topology.clab.yml
│ ├── avd_inventory
│ │ ├── ansible.cfg
│ │ ├── playbooks
│ │ │ ├── avd_deploy.yml
│ │ │ ├── avd_validate.yml
│ │ │ ├── avd_build.yml
│ │ │ └── avd_deploy_cvp.yml
│ │ ├── group_vars
│ │ │ ├── AVD_FABRIC_ENDPOINTS.yml
│ │ │ ├── AVD_FABRIC_TENANTS.yml
│ │ │ ├── CV_SERVERS.yml
│ │ │ └── AVD_FABRIC.yml
│ │ └── inventory.yml
│ ├── README.md
│ └── Makefile
└── cvaas-cvaas-and-avd-demo--evpn-mlag-small
│ ├── clab
│ ├── sn
│ │ ├── l01.txt
│ │ ├── l02.txt
│ │ ├── s01.txt
│ │ └── s02.txt
│ ├── init-configs
│ │ ├── l01.cfg
│ │ ├── l02.cfg
│ │ ├── s01.cfg
│ │ └── s02.cfg
│ └── topology.clab.yml
│ ├── avd_inventory
│ ├── ansible.cfg
│ ├── playbooks
│ │ ├── avd_deploy.yml
│ │ ├── avd_validate.yml
│ │ ├── avd_build.yml
│ │ └── avd_deploy_cvp.yml
│ ├── group_vars
│ │ ├── AVD_FABRIC_ENDPOINTS.yml
│ │ ├── AVD_FABRIC_TENANTS.yml
│ │ ├── CV_SERVERS.yml
│ │ └── AVD_FABRIC.yml
│ └── inventory.yml
│ ├── README.md
│ └── Makefile
├── extras
├── cc_extra_context
│ └── atd-dual-dc-left
│ │ ├── lab_host_inventory.csv
│ │ ├── lab_inventory.csv
│ │ └── lab_cabling_plan.csv
└── excalidraw
│ ├── atd-dual-dc-left.png
│ └── provisioning-building-blocks.png
├── README.md
├── containers
├── avd_extended_workshop
│ └── .devcontainer
│ │ ├── postCreate.sh
│ │ ├── Dockerfile
│ │ └── devcontainer.json
├── clab-build-containerlab-with-ceos
│ └── .devcontainer
│ │ ├── addAliases.sh
│ │ ├── postCreate.sh
│ │ └── Dockerfile
├── playground-small-evpn-mlag
│ └── .devcontainer
│ │ ├── addAliases.sh
│ │ ├── Dockerfile
│ │ ├── postCreate.sh
│ │ └── devcontainer.json
├── cvaas-cvaas-and-avd-demo--evpn-aa
│ └── .devcontainer
│ │ ├── addAliases.sh
│ │ ├── Dockerfile
│ │ └── devcontainer.json
├── cvaas-cvaas-and-avd-demo--evpn-mlag
│ └── .devcontainer
│ │ ├── addAliases.sh
│ │ ├── Dockerfile
│ │ └── devcontainer.json
├── avd-single-dc-l3ls
│ └── .devcontainer
│ │ ├── postCreate.sh
│ │ ├── addAliases.sh
│ │ ├── Dockerfile
│ │ └── devcontainer.json
└── avd-avd-extended-workshop--part-1
│ └── .devcontainer
│ ├── addAliases.sh
│ ├── Dockerfile
│ ├── postCreate.sh
│ └── devcontainer.json
├── .github
└── workflows
│ ├── avd-single-dc-l3ls.yml
│ ├── clab-build-containerlab-with-ceos.yml
│ ├── cvaas-cvaas-and-avd-demo--evpn-aa.yml
│ ├── avd-avd-extended-workshop--part-1.yml
│ ├── cvaas-cvaas-and-avd-demo--evpn-mlag.yml
│ └── playground-small-evpn-mlag.yml
└── .vscode
└── settings.json
/.npmignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignored/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/assets/img/avd-single-dc-l3ls/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/assets/img/playground-small-evpn-mlag/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.cc/lab_host_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | h01,10.0.3.1
3 | h02,10.0.3.2
--------------------------------------------------------------------------------
/CSVs/minimalistic-l3ls-aa/lab_host_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | h01,10.0.3.1
--------------------------------------------------------------------------------
/CSVs/minimalistic-l3ls-mlag/lab_host_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | h01,10.0.3.1
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/docs/assets/img/{{cookiecutter.__demo_slug}}/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/CSVs/small-l3ls-aa/lab_host_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | h01,10.0.3.1
3 | h02,10.0.3.2
--------------------------------------------------------------------------------
/CSVs/small-l3ls-mlag/lab_host_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | h01,10.0.3.1
3 | h02,10.0.3.2
--------------------------------------------------------------------------------
/slides/img/lab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/lab.png
--------------------------------------------------------------------------------
/CSVs/atd-l3ls/lab_host_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | dc1-leaf1-server1,172.16.1.201
3 | dc1-leaf2-server1,172.16.1.202
--------------------------------------------------------------------------------
/.devcontainer/requirements.txt:
--------------------------------------------------------------------------------
1 | mkdocs
2 | mkdocs-material
3 | mkdocs-macros-plugin
4 | mdx_truly_sane_lists
5 | cookiecutter
6 |
--------------------------------------------------------------------------------
/CSVs/minimalistic-l3ls-aa/lab_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | s01,10.0.1.1
3 | s02,10.0.1.2
4 | l01,10.0.2.1
5 | l02,10.0.2.2
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/sn/dc1-leaf1a.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95829B83
2 | SYSTEMMACADDR=001c.7301.4645
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/sn/dc1-leaf1b.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A958296BD
2 | SYSTEMMACADDR=001c.7301.934C
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/sn/dc1-leaf1c.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582C8D8
2 | SYSTEMMACADDR=001c.7301.90A5
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/sn/dc1-leaf2a.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582C8C8
2 | SYSTEMMACADDR=001c.7301.33F1
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/sn/dc1-leaf2b.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95829268
2 | SYSTEMMACADDR=001c.7301.0737
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/sn/dc1-leaf2c.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582A496
2 | SYSTEMMACADDR=001c.7301.5FC0
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/sn/dc1-spine1.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95827B73
2 | SYSTEMMACADDR=001c.7301.0585
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/sn/dc1-spine2.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95820733
2 | SYSTEMMACADDR=001c.7301.F058
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/sn/l01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582368A
2 | SYSTEMMACADDR=001c.7301.0560
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/sn/l02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582580B
2 | SYSTEMMACADDR=001c.7301.4B42
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/sn/s01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95824BF0
2 | SYSTEMMACADDR=001c.7301.4906
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/sn/s02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582DCF1
2 | SYSTEMMACADDR=001c.7301.F3C5
--------------------------------------------------------------------------------
/slides/img/atd-l3ls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/atd-l3ls.png
--------------------------------------------------------------------------------
/slides/img/atd-topo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/atd-topo.png
--------------------------------------------------------------------------------
/slides/img/cv-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/cv-logo.png
--------------------------------------------------------------------------------
/CSVs/minimalistic-l3ls-mlag/lab_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | s01,10.0.1.1
3 | s02,10.0.1.2
4 | l01,10.0.2.1
5 | l02,10.0.2.2
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/clab/sn/l01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A958239F3
2 | SYSTEMMACADDR=001c.7301.5B24
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/clab/sn/l02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95829B7B
2 | SYSTEMMACADDR=001c.7301.C0DB
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/clab/sn/s01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95824321
2 | SYSTEMMACADDR=001c.7301.AA15
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/clab/sn/s02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582006C
2 | SYSTEMMACADDR=001c.7301.C67D
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/sn/l01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582D15A
2 | SYSTEMMACADDR=001c.7301.3B54
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/sn/l02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A958297F7
2 | SYSTEMMACADDR=001c.7301.9342
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/sn/l03.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95829018
2 | SYSTEMMACADDR=001c.7301.5869
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/sn/l04.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95823FF3
2 | SYSTEMMACADDR=001c.7301.2CF4
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/sn/s01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582DDCF
2 | SYSTEMMACADDR=001c.7301.0D20
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/sn/s02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95827F68
2 | SYSTEMMACADDR=001c.7301.7FA8
--------------------------------------------------------------------------------
/extras/cc_extra_context/atd-dual-dc-left/lab_host_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | s1-host1,192.168.0.16
3 | s1-host2,192.168.0.17
--------------------------------------------------------------------------------
/slides/img/avd-logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/avd-logo.webp
--------------------------------------------------------------------------------
/slides/img/code-stable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/code-stable.png
--------------------------------------------------------------------------------
/slides/img/demo-setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/demo-setup.png
--------------------------------------------------------------------------------
/slides/img/github-mark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/github-mark.png
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/sn/l01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95822176
2 | SYSTEMMACADDR=001c.7301.65AF
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/sn/l02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582812B
2 | SYSTEMMACADDR=001c.7301.1F52
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/sn/l03.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A958294D7
2 | SYSTEMMACADDR=001c.7301.9717
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/sn/l04.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95824251
2 | SYSTEMMACADDR=001c.7301.7FB8
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/sn/s01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95821F61
2 | SYSTEMMACADDR=001c.7301.304A
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/sn/s02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582BDBD
2 | SYSTEMMACADDR=001c.7301.7F19
--------------------------------------------------------------------------------
/slides/img/Ansible_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/Ansible_Logo.png
--------------------------------------------------------------------------------
/slides/img/arista-switch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/arista-switch.png
--------------------------------------------------------------------------------
/slides/img/demo-workflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/demo-workflow.png
--------------------------------------------------------------------------------
/slides/img/vscode-search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/vscode-search.png
--------------------------------------------------------------------------------
/.cc/lab_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | s01,10.0.1.1
3 | s02,10.0.1.2
4 | l01,10.0.2.1
5 | l02,10.0.2.2
6 | l03,10.0.2.3
7 | l04,10.0.2.4
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/sn/dc1-leaf1a.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582CF14
2 | SYSTEMMACADDR=001c.7301.2031
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/sn/dc1-leaf1b.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582989F
2 | SYSTEMMACADDR=001c.7301.C716
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/sn/dc1-leaf1c.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95827696
2 | SYSTEMMACADDR=001c.7301.634B
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/sn/dc1-leaf2a.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95826DB0
2 | SYSTEMMACADDR=001c.7301.2290
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/sn/dc1-leaf2b.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582063F
2 | SYSTEMMACADDR=001c.7301.0A33
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/sn/dc1-leaf2c.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582087F
2 | SYSTEMMACADDR=001c.7301.9330
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/sn/dc1-spine1.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582D007
2 | SYSTEMMACADDR=001c.7301.44DD
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/sn/dc1-spine2.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582291F
2 | SYSTEMMACADDR=001c.7301.8026
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/clab/sn/l01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582D15A
2 | SYSTEMMACADDR=001c.7301.3B54
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/clab/sn/l02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A958297F7
2 | SYSTEMMACADDR=001c.7301.9342
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/clab/sn/s01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582DDCF
2 | SYSTEMMACADDR=001c.7301.0D20
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/clab/sn/s02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95827F68
2 | SYSTEMMACADDR=001c.7301.7FA8
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/clab/sn/l01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95822176
2 | SYSTEMMACADDR=001c.7301.65AF
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/clab/sn/l02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582812B
2 | SYSTEMMACADDR=001c.7301.1F52
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/clab/sn/s01.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A95821F61
2 | SYSTEMMACADDR=001c.7301.304A
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/clab/sn/s02.txt:
--------------------------------------------------------------------------------
1 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582BDBD
2 | SYSTEMMACADDR=001c.7301.7F19
--------------------------------------------------------------------------------
/slides/img/Git-Icon-1788C.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/Git-Icon-1788C.png
--------------------------------------------------------------------------------
/slides/img/Git-Icon-Black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/Git-Icon-Black.png
--------------------------------------------------------------------------------
/slides/img/Git-Icon-White.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/Git-Icon-White.png
--------------------------------------------------------------------------------
/slides/img/Git-Logo-1788C.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/Git-Logo-1788C.png
--------------------------------------------------------------------------------
/slides/img/Git-Logo-2Color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/Git-Logo-2Color.png
--------------------------------------------------------------------------------
/slides/img/Git-Logo-Black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/Git-Logo-Black.png
--------------------------------------------------------------------------------
/slides/img/Git-Logo-White.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/Git-Logo-White.png
--------------------------------------------------------------------------------
/slides/img/atd-dual-dc-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/atd-dual-dc-left.png
--------------------------------------------------------------------------------
/slides/img/github-billing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/github-billing.png
--------------------------------------------------------------------------------
/slides/img/github-merge-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/github-merge-pr.png
--------------------------------------------------------------------------------
/slides/img/start-codespaces.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/start-codespaces.jpg
--------------------------------------------------------------------------------
/slides/img/ansible_variables1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/ansible_variables1.png
--------------------------------------------------------------------------------
/slides/img/atd-coder-password.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/atd-coder-password.png
--------------------------------------------------------------------------------
/slides/img/codespaces-open-in.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/codespaces-open-in.jpg
--------------------------------------------------------------------------------
/slides/img/github-mark-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/github-mark-white.png
--------------------------------------------------------------------------------
/slides/img/why_devcontainers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/why_devcontainers.png
--------------------------------------------------------------------------------
/docs/assets/img/account_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/account_settings.png
--------------------------------------------------------------------------------
/slides/img/github-delete-branch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/github-delete-branch.png
--------------------------------------------------------------------------------
/slides/img/leonardo-yip-unsplash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/leonardo-yip-unsplash.jpg
--------------------------------------------------------------------------------
/slides/img/pexels-ann-h-7186206.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-ann-h-7186206.jpg
--------------------------------------------------------------------------------
/slides/img/pexels-danne-555709.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-danne-555709.jpg
--------------------------------------------------------------------------------
/slides/img/pexels-pixabay-159591.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-pixabay-159591.jpg
--------------------------------------------------------------------------------
/slides/img/pexels-pixabay-207580.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-pixabay-207580.jpg
--------------------------------------------------------------------------------
/slides/img/pexels-pixabay-356043.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-pixabay-356043.jpg
--------------------------------------------------------------------------------
/CSVs/small-l3ls-aa/lab_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | s01,10.0.1.1
3 | s02,10.0.1.2
4 | l01,10.0.2.1
5 | l02,10.0.2.2
6 | l03,10.0.2.3
7 | l04,10.0.2.4
--------------------------------------------------------------------------------
/CSVs/small-l3ls-mlag/lab_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | s01,10.0.1.1
3 | s02,10.0.1.2
4 | l01,10.0.2.1
5 | l02,10.0.2.2
6 | l03,10.0.2.3
7 | l04,10.0.2.4
--------------------------------------------------------------------------------
/docs/assets/img/codespaces-secrets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/codespaces-secrets.png
--------------------------------------------------------------------------------
/docs/assets/img/topos/min-l3ls-aa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/topos/min-l3ls-aa.png
--------------------------------------------------------------------------------
/extras/excalidraw/atd-dual-dc-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/extras/excalidraw/atd-dual-dc-left.png
--------------------------------------------------------------------------------
/slides/img/architecture-containers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/architecture-containers.png
--------------------------------------------------------------------------------
/slides/img/atd-access-lab-topology.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/atd-access-lab-topology.png
--------------------------------------------------------------------------------
/slides/img/github-compare-and-pull.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/github-compare-and-pull.png
--------------------------------------------------------------------------------
/docs/assets/img/pexels-ann-h-7186206.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/pexels-ann-h-7186206.jpg
--------------------------------------------------------------------------------
/docs/assets/img/pexels-danne-555709.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/pexels-danne-555709.jpg
--------------------------------------------------------------------------------
/docs/assets/img/topos/min-l3ls-mlag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/topos/min-l3ls-mlag.png
--------------------------------------------------------------------------------
/docs/assets/img/topos/small-l3ls-aa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/topos/small-l3ls-aa.png
--------------------------------------------------------------------------------
/docs/assets/img/topos/small-l3ls-mlag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/topos/small-l3ls-mlag.png
--------------------------------------------------------------------------------
/slides/img/commit-atd-passwd-changes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/commit-atd-passwd-changes.png
--------------------------------------------------------------------------------
/slides/img/github-open-a-pull-request.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/github-open-a-pull-request.png
--------------------------------------------------------------------------------
/slides/img/import-github-repository.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/import-github-repository.png
--------------------------------------------------------------------------------
/slides/img/01-primary-blue-docker-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/01-primary-blue-docker-logo.png
--------------------------------------------------------------------------------
/slides/img/github-review-files-changed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/github-review-files-changed.png
--------------------------------------------------------------------------------
/slides/img/provisioning-building-blocks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/provisioning-building-blocks.png
--------------------------------------------------------------------------------
/docs/assets/data/github.yml:
--------------------------------------------------------------------------------
1 | ---
2 | org_name: arista-netdevops-community
3 | repo_name: one-click-se-demos
4 | repository: arista-netdevops-community/one-click-se-demos
5 |
--------------------------------------------------------------------------------
/slides/img/atd-click-programmability-ide.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/atd-click-programmability-ide.jpg
--------------------------------------------------------------------------------
/slides/img/import-github-repository-step-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/import-github-repository-step-2.png
--------------------------------------------------------------------------------
/slides/img/pexels-suzy-hazelwood-1226398.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-suzy-hazelwood-1226398.jpg
--------------------------------------------------------------------------------
/slides/img/pexels-valeriia-miller-3020919.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-valeriia-miller-3020919.jpg
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/ansible.cfg:
--------------------------------------------------------------------------------
1 | [defaults]
2 | inventory = inventory.yml
3 | jinja2_extensions = jinja2.ext.loopcontrols,jinja2.ext.do,jinja2.ext.i18n
4 |
--------------------------------------------------------------------------------
/slides/img/pexels-realtoughcandycom-11035544.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-realtoughcandycom-11035544.jpg
--------------------------------------------------------------------------------
/slides/img/pexels-startup-stock-photos-7376.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-startup-stock-photos-7376.jpg
--------------------------------------------------------------------------------
/slides/img/pexels-towfiqu-barbhuiya-11412596.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-towfiqu-barbhuiya-11412596.jpg
--------------------------------------------------------------------------------
/extras/excalidraw/provisioning-building-blocks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/extras/excalidraw/provisioning-building-blocks.png
--------------------------------------------------------------------------------
/slides/img/import-github-change-default-branch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/import-github-change-default-branch.png
--------------------------------------------------------------------------------
/slides/img/pexels-suzy-hazelwood-1226398 copy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-suzy-hazelwood-1226398 copy.jpg
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/ansible.cfg:
--------------------------------------------------------------------------------
1 | [defaults]
2 | forks = 5
3 | inventory = inventory.yml
4 | jinja2_extensions = jinja2.ext.loopcontrols,jinja2.ext.do,jinja2.ext.i18n
5 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/ansible.cfg:
--------------------------------------------------------------------------------
1 | [defaults]
2 | forks = 5
3 | inventory = inventory.yml
4 | jinja2_extensions = jinja2.ext.loopcontrols,jinja2.ext.do,jinja2.ext.i18n
5 |
--------------------------------------------------------------------------------
/docs/assets/img/avd-avd-extended-workshop--part-1/atd-l3ls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/avd-avd-extended-workshop--part-1/atd-l3ls.png
--------------------------------------------------------------------------------
/slides/img/clab-build-containerlab-with-ceos/ceos-download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/clab-build-containerlab-with-ceos/ceos-download.png
--------------------------------------------------------------------------------
/slides/img/clab-build-containerlab-with-ceos/min-l3ls-mlag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/clab-build-containerlab-with-ceos/min-l3ls-mlag.png
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/ansible.cfg:
--------------------------------------------------------------------------------
1 | [defaults]
2 | forks = 5
3 | inventory = inventory.yml
4 | jinja2_extensions = jinja2.ext.loopcontrols,jinja2.ext.do,jinja2.ext.i18n
5 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/ansible.cfg:
--------------------------------------------------------------------------------
1 | [defaults]
2 | forks = 5
3 | inventory = inventory.yml
4 | jinja2_extensions = jinja2.ext.loopcontrols,jinja2.ext.do,jinja2.ext.i18n
5 |
--------------------------------------------------------------------------------
/slides/img/pexels-tara-winstead-8386732-modified-stackoverflow.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/slides/img/pexels-tara-winstead-8386732-modified-stackoverflow.jpg
--------------------------------------------------------------------------------
/docs/assets/img/clab-build-containerlab-with-ceos/ceos-download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/clab-build-containerlab-with-ceos/ceos-download.png
--------------------------------------------------------------------------------
/docs/assets/img/clab-build-containerlab-with-ceos/min-l3ls-mlag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arista-netdevops-community/one-click-se-demos/HEAD/docs/assets/img/clab-build-containerlab-with-ceos/min-l3ls-mlag.png
--------------------------------------------------------------------------------
/extras/cc_extra_context/atd-dual-dc-left/lab_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | s1-spine1,192.168.0.10
3 | s1-spine2,192.168.0.11
4 | s1-leaf1,192.168.0.12
5 | s1-leaf2,192.168.0.13
6 | s1-leaf3,192.168.0.14
7 | s1-leaf4,192.168.0.15
--------------------------------------------------------------------------------
/CSVs/minimalistic-l3ls-aa/lab_cabling_plan.csv:
--------------------------------------------------------------------------------
1 | local_switch,local_interface,remote_switch,remote_interface
2 | l01,eth1,s01,eth1
3 | l01,eth2,s02,eth1
4 | l02,eth1,s01,eth2
5 | l02,eth2,s02,eth2
6 | h01,eth1,l01,eth10
7 | h01,eth2,l02,eth10
--------------------------------------------------------------------------------
/CSVs/atd-l3ls/lab_inventory.csv:
--------------------------------------------------------------------------------
1 | hostname,mgmt_ip
2 | dc1-spine1,172.16.1.11
3 | dc1-spine2,172.16.1.12
4 | dc1-leaf1a,172.16.1.101
5 | dc1-leaf1b,172.16.1.102
6 | dc1-leaf2a,172.16.1.103
7 | dc1-leaf2b,172.16.1.104
8 | dc1-leaf1c,172.16.1.151
9 | dc1-leaf2c,172.16.1.152
--------------------------------------------------------------------------------
/CSVs/minimalistic-l3ls-mlag/lab_cabling_plan.csv:
--------------------------------------------------------------------------------
1 | local_switch,local_interface,remote_switch,remote_interface
2 | l01,eth1,s01,eth1
3 | l01,eth2,s02,eth1
4 | l02,eth1,s01,eth2
5 | l02,eth2,s02,eth2
6 | l01,eth3,l02,eth3
7 | l01,eth4,l02,eth4
8 | h01,eth1,l01,eth10
9 | h01,eth2,l02,eth10
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/playbooks/avd_deploy.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Deploy Configs
3 | hosts: AVD_FABRIC
4 | gather_facts: false
5 | tasks:
6 |
7 | - name: Deploy Configurations to Devices
8 | import_role:
9 | name: arista.avd.eos_config_deploy_eapi
10 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/playbooks/avd_deploy.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Deploy Configs
3 | hosts: AVD_FABRIC
4 | gather_facts: false
5 | tasks:
6 |
7 | - name: Deploy Configurations to Devices
8 | import_role:
9 | name: arista.avd.eos_config_deploy_eapi
10 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/playbooks/avd_deploy.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Deploy Configs
3 | hosts: AVD_FABRIC
4 | gather_facts: false
5 | tasks:
6 |
7 | - name: Deploy Configurations to Devices
8 | import_role:
9 | name: arista.avd.eos_config_deploy_eapi
10 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/playbooks/avd_deploy.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Deploy Configs
3 | hosts: AVD_FABRIC
4 | gather_facts: false
5 | tasks:
6 |
7 | - name: Deploy Configurations to Devices
8 | import_role:
9 | name: arista.avd.eos_config_deploy_eapi
10 |
--------------------------------------------------------------------------------
/.cc/lab_cabling_plan.csv:
--------------------------------------------------------------------------------
1 | local_switch,local_interface,remote_switch,remote_interface
2 | l01,eth1,s01,eth1
3 | l01,eth2,s02,eth1
4 | l02,eth1,s01,eth2
5 | l02,eth2,s02,eth2
6 | l03,eth1,s01,eth3
7 | l03,eth2,s02,eth3
8 | l04,eth1,s01,eth4
9 | l04,eth2,s02,eth4
10 | h01,eth1,l01,eth10
11 | h01,eth2,l02,eth10
12 | h02,eth1,l03,eth20
13 | h02,eth2,l04,eth20
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/group_vars/AVD_FABRIC_ENDPOINTS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | servers:
3 |
4 | - name: h01
5 | adapters:
6 | - mode: trunk
7 | switch_ports:
8 | - Ethernet10
9 | - Ethernet10
10 | switches:
11 | - l01
12 | - l02
13 | vlans: 100
14 | port_channel:
15 | mode: active
16 |
--------------------------------------------------------------------------------
/CSVs/small-l3ls-aa/lab_cabling_plan.csv:
--------------------------------------------------------------------------------
1 | local_switch,local_interface,remote_switch,remote_interface
2 | l01,eth1,s01,eth1
3 | l01,eth2,s02,eth1
4 | l02,eth1,s01,eth2
5 | l02,eth2,s02,eth2
6 | l03,eth1,s01,eth3
7 | l03,eth2,s02,eth3
8 | l04,eth1,s01,eth4
9 | l04,eth2,s02,eth4
10 | h01,eth1,l01,eth10
11 | h01,eth2,l02,eth10
12 | h02,eth1,l03,eth20
13 | h02,eth2,l04,eth20
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/clab/interface_mapping.json:
--------------------------------------------------------------------------------
1 | {
2 | "ManagementIntf": {
3 | "eth0": "Management1"
4 | },
5 | "EthernetIntf": {
6 | "eth1_1": "Ethernet1/1",
7 | "eth2_1": "Ethernet2/1",
8 | "eth3_1": "Ethernet3/1",
9 | "eth4_1": "Ethernet4/1",
10 | "eth10_1": "Ethernet10/1"
11 | }
12 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # One Click SE Demos
2 |
3 | Every good demo should only take one click to start!
4 | The purpose of this repository is to provide a collection of demos and labs for Arista SEs and customers, that can be started in Github Codespaces by pressing a single button.
5 |
6 | [Check the project documentation here](https://arista-netdevops-community.github.io/one-click-se-demos/)
7 |
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/demos/{{cookiecutter.__demo_slug}}/clab/sn/{% for hostname in cookiecutter.__lab.lab_inventory %}.txt.jinja:
--------------------------------------------------------------------------------
1 | {%- macro random_id(len) %}
2 | {%- for a_digit in range(len) %}
3 | {{- [0,1,2,3,4,5,6,7,8,9,"A","B","C","D","F"]|random }}
4 | {%- endfor %}
5 | {%- endmacro -%}
6 | SERIALNUMBER=1C68470A1E0CD6EF7418D78A9582{{ random_id(4) }}
7 | SYSTEMMACADDR=001c.7301.{{ random_id(4) }}
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/group_vars/AVD_FABRIC_ENDPOINTS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | servers:
3 |
4 | - name: h01
5 | adapters:
6 | - mode: trunk
7 | switch_ports:
8 | - Ethernet10
9 | - Ethernet10
10 | switches:
11 | - l01
12 | - l02
13 | vlans: 100
14 | ethernet_segment:
15 | short_esi: dead:beef:0001
16 | port_channel:
17 | mode: active
18 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/playbooks/avd_validate.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: "Run Fabric states validation"
3 | hosts: AVD_FABRIC
4 | connection: local
5 | gather_facts: false
6 | collections:
7 | - arista.avd
8 | tasks:
9 |
10 | - name: Deploy configuration to device
11 | import_role:
12 | name: eos_validate_state
13 | vars:
14 | use_anta: true
15 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/playbooks/avd_validate.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: "Run Fabric states validation"
3 | hosts: AVD_FABRIC
4 | connection: local
5 | gather_facts: false
6 | collections:
7 | - arista.avd
8 | tasks:
9 |
10 | - name: Deploy configuration to device
11 | import_role:
12 | name: eos_validate_state
13 | vars:
14 | use_anta: true
15 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/playbooks/avd_validate.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: "Run Fabric states validation"
3 | hosts: AVD_FABRIC
4 | connection: local
5 | gather_facts: false
6 | collections:
7 | - arista.avd
8 | tasks:
9 |
10 | - name: Deploy configuration to device
11 | import_role:
12 | name: eos_validate_state
13 | vars:
14 | use_anta: true
15 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/playbooks/avd_validate.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: "Run Fabric states validation"
3 | hosts: AVD_FABRIC
4 | connection: local
5 | gather_facts: false
6 | collections:
7 | - arista.avd
8 | tasks:
9 |
10 | - name: Deploy configuration to device
11 | import_role:
12 | name: eos_validate_state
13 | vars:
14 | use_anta: true
15 |
--------------------------------------------------------------------------------
/CSVs/small-l3ls-mlag/lab_cabling_plan.csv:
--------------------------------------------------------------------------------
1 | local_switch,local_interface,remote_switch,remote_interface
2 | l01,eth1,s01,eth1
3 | l01,eth2,s02,eth1
4 | l02,eth1,s01,eth2
5 | l02,eth2,s02,eth2
6 | l03,eth1,s01,eth3
7 | l03,eth2,s02,eth3
8 | l04,eth1,s01,eth4
9 | l04,eth2,s02,eth4
10 | l01,eth3,l02,eth3
11 | l01,eth4,l02,eth4
12 | l03,eth3,l04,eth3
13 | l03,eth4,l04,eth4
14 | h01,eth1,l01,eth10
15 | h01,eth2,l02,eth10
16 | h02,eth1,l03,eth20
17 | h02,eth2,l04,eth20
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/playbooks/avd_build.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Build Configs
3 | hosts: AVD_FABRIC
4 | gather_facts: false
5 | tasks:
6 |
7 | - name: Generate AVD Structured Configurations and Fabric Documentation
8 | import_role:
9 | name: arista.avd.eos_designs
10 |
11 | - name: Generate Device Configurations and Documentation
12 | import_role:
13 | name: arista.avd.eos_cli_config_gen
14 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/playbooks/avd_build.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Build Configs
3 | hosts: AVD_FABRIC
4 | gather_facts: false
5 | tasks:
6 |
7 | - name: Generate AVD Structured Configurations and Fabric Documentation
8 | import_role:
9 | name: arista.avd.eos_designs
10 |
11 | - name: Generate Device Configurations and Documentation
12 | import_role:
13 | name: arista.avd.eos_cli_config_gen
14 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/group_vars/AVD_FABRIC_TENANTS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | tenants:
3 | - mac_vrf_vni_base: 10000
4 | name: TENANT_A
5 | vrfs:
6 |
7 | - name: VRF1
8 | vrf_id: 1
9 | vtep_diagnostic:
10 | loopback: '101'
11 | loopback_ip_range: 100.64.101.0/24
12 | svis:
13 | - enabled: true
14 | id: 100
15 | ip_address_virtual: 10.100.100.1/24
16 | name: VLAN101
17 | tags: [l01,l02]
18 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/playbooks/avd_build.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Build Configs
3 | hosts: AVD_FABRIC
4 | gather_facts: false
5 | tasks:
6 |
7 | - name: Generate AVD Structured Configurations and Fabric Documentation
8 | import_role:
9 | name: arista.avd.eos_designs
10 |
11 | - name: Generate Device Configurations and Documentation
12 | import_role:
13 | name: arista.avd.eos_cli_config_gen
14 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/group_vars/AVD_FABRIC_TENANTS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | tenants:
3 | - mac_vrf_vni_base: 10000
4 | name: TENANT_A
5 | vrfs:
6 |
7 | - name: VRF1
8 | vrf_id: 1
9 | vtep_diagnostic:
10 | loopback: '101'
11 | loopback_ip_range: 100.64.101.0/24
12 | svis:
13 | - enabled: true
14 | id: 100
15 | ip_address_virtual: 10.100.100.1/24
16 | name: VLAN101
17 | tags: [l01,l02]
18 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/playbooks/avd_build.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Build Configs
3 | hosts: AVD_FABRIC
4 | gather_facts: false
5 | tasks:
6 |
7 | - name: Generate AVD Structured Configurations and Fabric Documentation
8 | import_role:
9 | name: arista.avd.eos_designs
10 |
11 | - name: Generate Device Configurations and Documentation
12 | import_role:
13 | name: arista.avd.eos_cli_config_gen
14 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/group_vars/CV_SERVERS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ansible_user: "{{ lookup('ansible.builtin.env', 'CVUSER', default='cvaas') }}"
3 | # CV_API_TOKEN must be generated in advance, valid and set as env variable
4 | ansible_password: "{{ lookup('ansible.builtin.env', 'CV_API_TOKEN') }}"
5 | ansible_connection: httpapi
6 | ansible_network_os: eos
7 | ansible_httpapi_use_ssl: True
8 | ansible_httpapi_validate_certs: True
9 | ansible_httpapi_port: 443
10 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/group_vars/CV_SERVERS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ansible_user: "{{ lookup('ansible.builtin.env', 'CVUSER', default='cvaas') }}"
3 | # CV_API_TOKEN must be generated in advance, valid and set as env variable
4 | ansible_password: "{{ lookup('ansible.builtin.env', 'CV_API_TOKEN') }}"
5 | ansible_connection: httpapi
6 | ansible_network_os: eos
7 | ansible_httpapi_use_ssl: True
8 | ansible_httpapi_validate_certs: True
9 | ansible_httpapi_port: 443
10 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/group_vars/CV_SERVERS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ansible_user: "{{ lookup('ansible.builtin.env', 'CVUSER', default='cvaas') }}"
3 | # CV_API_TOKEN must be generated in advance, valid and set as env variable
4 | ansible_password: "{{ lookup('ansible.builtin.env', 'CV_API_TOKEN') }}"
5 | ansible_connection: httpapi
6 | ansible_network_os: eos
7 | ansible_httpapi_use_ssl: True
8 | ansible_httpapi_validate_certs: True
9 | ansible_httpapi_port: 443
10 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/group_vars/CV_SERVERS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ansible_user: "{{ lookup('ansible.builtin.env', 'CVUSER', default='cvaas') }}"
3 | # CV_API_TOKEN must be generated in advance, valid and set as env variable
4 | ansible_password: "{{ lookup('ansible.builtin.env', 'CV_API_TOKEN') }}"
5 | ansible_connection: httpapi
6 | ansible_network_os: eos
7 | ansible_httpapi_use_ssl: True
8 | ansible_httpapi_validate_certs: True
9 | ansible_httpapi_port: 443
10 |
--------------------------------------------------------------------------------
/extras/cc_extra_context/atd-dual-dc-left/lab_cabling_plan.csv:
--------------------------------------------------------------------------------
1 | local_switch,local_interface,remote_switch,remote_interface
2 | s1-leaf1,eth2,s1-spine1,eth2
3 | s1-leaf1,eth3,s1-spine2,eth2
4 | s1-leaf2,eth2,s1-spine1,eth3
5 | s1-leaf2,eth3,s1-spine2,eth3
6 | s1-leaf3,eth2,s1-spine1,eth4
7 | s1-leaf3,eth3,s1-spine2,eth4
8 | s1-leaf4,eth2,s1-spine1,eth5
9 | s1-leaf4,eth3,s1-spine2,eth5
10 | s1-host1,eth1,s1-leaf1,eth4
11 | s1-host1,eth2,s1-leaf2,eth4
12 | s1-host2,eth1,s1-leaf3,eth4
13 | s1-host2,eth2,s1-leaf4,eth4
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/playbooks/avd_deploy_cvp.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Deploy Configs via CVP
3 | hosts: CV_SERVERS
4 | connection: local
5 | gather_facts: false
6 | collections:
7 | - arista.cvp
8 | tasks:
9 |
10 | - name: Deploy configs generated by AVD on CVP
11 | import_role:
12 | name: arista.avd.eos_config_deploy_cvp
13 | vars:
14 | container_root: AVD_FABRIC
15 | configlets_prefix: AVD
16 | state: present
17 | cv_collection: v3
18 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/playbooks/avd_deploy_cvp.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Deploy Configs via CVP
3 | hosts: CV_SERVERS
4 | connection: local
5 | gather_facts: false
6 | collections:
7 | - arista.cvp
8 | tasks:
9 |
10 | - name: Deploy configs generated by AVD on CVP
11 | import_role:
12 | name: arista.avd.eos_config_deploy_cvp
13 | vars:
14 | container_root: AVD_FABRIC
15 | configlets_prefix: AVD
16 | state: present
17 | cv_collection: v3
18 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/playbooks/avd_deploy_cvp.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Deploy Configs via CVP
3 | hosts: CV_SERVERS
4 | connection: local
5 | gather_facts: false
6 | collections:
7 | - arista.cvp
8 | tasks:
9 |
10 | - name: Deploy configs generated by AVD on CVP
11 | import_role:
12 | name: arista.avd.eos_config_deploy_cvp
13 | vars:
14 | container_root: AVD_FABRIC
15 | configlets_prefix: AVD
16 | state: present
17 | cv_collection: v3
18 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/playbooks/avd_deploy_cvp.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Deploy Configs via CVP
3 | hosts: CV_SERVERS
4 | connection: local
5 | gather_facts: false
6 | collections:
7 | - arista.cvp
8 | tasks:
9 |
10 | - name: Deploy configs generated by AVD on CVP
11 | import_role:
12 | name: arista.avd.eos_config_deploy_cvp
13 | vars:
14 | container_root: AVD_FABRIC
15 | configlets_prefix: AVD
16 | state: present
17 | cv_collection: v3
18 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/group_vars/AVD_FABRIC_ENDPOINTS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | servers:
3 |
4 | - name: h01
5 | adapters:
6 | - mode: trunk
7 | switch_ports:
8 | - Ethernet10
9 | - Ethernet10
10 | switches:
11 | - l01
12 | - l02
13 | vlans: 100
14 | port_channel:
15 | mode: active
16 |
17 | - name: h02
18 | adapters:
19 | - mode: trunk
20 | switch_ports:
21 | - Ethernet20
22 | - Ethernet20
23 | switches:
24 | - l03
25 | - l04
26 | vlans: 200
27 | port_channel:
28 | mode: active
29 |
--------------------------------------------------------------------------------
/containers/avd_extended_workshop/.devcontainer/postCreate.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 | # replace all markdown vars in demo directory
6 | grep -rl '{{gh.repo_name}}' . --exclude-dir .git | xargs sed -i 's/{{gh.repo_name}}/'"${GITHUB_REPOSITORY##*/}"'/g'
7 | grep -rl '{{gh.org_name}}' . --exclude-dir .git | xargs sed -i 's/{{gh.org_name}}/'"${GITHUB_REPOSITORY%%/*}"'/g'
8 | grep -rl '{{gh.repository}}' . --exclude-dir .git | xargs sed -i 's@{{gh.repository}}@'"${GITHUB_REPOSITORY}"'@g'
9 |
10 | ardl get eos --image-type cEOS --version ${CEOS_LAB_VERSION} --import-docker
11 |
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/Makefile:
--------------------------------------------------------------------------------
1 | CURRENT_DIR := $(shell pwd)
2 |
3 | .PHONY: help
4 | help: ## Display help message
5 | @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}'
6 |
7 | .PHONY: start
8 | start: ## Deploy ceos lab
9 | sudo containerlab deploy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --max-workers 10 --timeout 5m --reconfigure
10 |
11 | .PHONY: stop
12 | stop: ## Destroy ceos lab
13 | sudo containerlab destroy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --cleanup
14 |
--------------------------------------------------------------------------------
/containers/clab-build-containerlab-with-ceos/.devcontainer/addAliases.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 |
6 | echo "alias s01='sshpass -p admin ssh -o \"StrictHostKeyChecking no\" admin@10.0.1.1'" >> ~/.zshrc
7 | echo "alias s02='sshpass -p admin ssh -o \"StrictHostKeyChecking no\" admin@10.0.1.2'" >> ~/.zshrc
8 | echo "alias l01='sshpass -p admin ssh -o \"StrictHostKeyChecking no\" admin@10.0.2.1'" >> ~/.zshrc
9 | echo "alias l02='sshpass -p admin ssh -o \"StrictHostKeyChecking no\" admin@10.0.2.2'" >> ~/.zshrc
10 |
11 | echo "alias h01='sshpass -p admin ssh -o \"StrictHostKeyChecking no\" admin@10.0.3.1'" >> ~/.zshrc
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/test.rest:
--------------------------------------------------------------------------------
1 | POST https://10.0.1.1/login/
2 |
3 | {
4 | "username": "arista",
5 | "password": "arista"
6 | }
7 |
8 | ###
9 |
10 | POST https://10.0.1.1/command-api/
11 |
12 | {
13 | "jsonrpc": "2.0",
14 | "method": "runCmds",
15 | "params": {
16 | "version": 1,
17 | "cmds": [
18 | "show version"
19 | ],
20 | "format": "json",
21 | "timestamps": false,
22 | "autoComplete": false,
23 | "expandAliases": false,
24 | "stopOnError": true,
25 | "streaming": false,
26 | "includeErrorDetail": false
27 | },
28 | "id": "EapiExplorer-1"
29 | }
30 |
--------------------------------------------------------------------------------
/containers/playground-small-evpn-mlag/.devcontainer/addAliases.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 |
6 | echo "alias s01='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.1.1'" >> ~/.zshrc
7 | echo "alias s02='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.1.2'" >> ~/.zshrc
8 | echo "alias l01='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.1'" >> ~/.zshrc
9 | echo "alias l02='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.2'" >> ~/.zshrc
10 |
11 | echo "alias h01='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.3.1'" >> ~/.zshrc
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/group_vars/AVD_FABRIC_TENANTS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | tenants:
3 | - mac_vrf_vni_base: 10000
4 | name: TENANT_A
5 | vrfs:
6 |
7 | - name: VRF1
8 | vrf_id: 1
9 | vtep_diagnostic:
10 | loopback: '101'
11 | loopback_ip_range: 100.64.101.0/24
12 | svis:
13 | - enabled: true
14 | id: 100
15 | ip_address_virtual: 10.100.100.1/24
16 | name: VLAN101
17 | tags: [l01,l02]
18 | - enabled: true
19 | id: 200
20 | ip_address_virtual: 10.200.200.1/24
21 | name: VLAN200
22 | evpn_vlan_bundle: VRF1
23 | tags: [l03,l04]
24 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/group_vars/AVD_FABRIC_TENANTS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | tenants:
3 | - mac_vrf_vni_base: 10000
4 | name: TENANT_A
5 | vrfs:
6 |
7 | - name: VRF1
8 | vrf_id: 1
9 | vtep_diagnostic:
10 | loopback: '101'
11 | loopback_ip_range: 100.64.101.0/24
12 | svis:
13 | - enabled: true
14 | id: 100
15 | ip_address_virtual: 10.100.100.1/24
16 | name: VLAN101
17 | tags: [l01,l02]
18 | - enabled: true
19 | id: 200
20 | ip_address_virtual: 10.200.200.1/24
21 | name: VLAN200
22 | evpn_vlan_bundle: VRF1
23 | tags: [l03,l04]
24 |
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/containers/{{cookiecutter.__demo_slug}}/.devcontainer/addAliases.sh.jinja:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 | {% for node in cookiecutter.__lab.lab_inventory %}
6 | echo "alias {{ node.hostname }}='sshpass -p {{ cookiecutter.clab_password }} ssh -o \"StrictHostKeyChecking no\" {{ cookiecutter.clab_user }}@{{ node.mgmt_ip }}'" >> ~/.zshrc
7 | {%- endfor %}
8 | {% for node in cookiecutter.__lab.lab_host_inventory %}
9 | echo "alias {{ node.hostname }}='sshpass -p {{ cookiecutter.clab_password }} ssh -o \"StrictHostKeyChecking no\" {{ cookiecutter.clab_user }}@{{ node.mgmt_ip }}'" >> ~/.zshrc
10 | {%- endfor %}
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/demos/{{cookiecutter.__demo_slug}}/Makefile.jinja:
--------------------------------------------------------------------------------
1 | CURRENT_DIR := $(shell pwd)
2 |
3 | .PHONY: help
4 | help: ## Display help message
5 | @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}'
6 |
7 | .PHONY: start
8 | start: ## Deploy ceos lab
9 | sudo containerlab deploy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --max-workers 10 --timeout 5m --reconfigure
10 |
11 | .PHONY: stop
12 | stop: ## Destroy ceos lab
13 | sudo containerlab destroy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --cleanup
14 |
--------------------------------------------------------------------------------
/.cc/hooks/post_gen_project.sh.jinja:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | cp -r ./ ../
4 | rm -rf /workspaces/{% raw %}{{gh.repo_name}}{%endraw%}/{{ cookiecutter.__demo_slug }}
5 |
6 | # print additional instructions
7 | echo "The required files for {{ cookiecutter.demo_name }} were generated."
8 | echo "Please review them before committing."
9 | echo ""
10 | echo "If you are creating a new demo, please do not forget to reference it in the 'nav' section of 'mkdocs.yml'"
11 | echo ""
12 | echo "Example:"
13 | echo ""
14 | echo "nav:"
15 | echo " - {{ cookiecutter.demo_group }}:"
16 | echo " - {{ cookiecutter.demo_name }}: {{ cookiecutter.__demo_slug }}.md"
17 |
--------------------------------------------------------------------------------
/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG FROM_IMAGE
2 | ARG FROM_VARIANT
3 |
4 | FROM ${FROM_IMAGE}:${FROM_VARIANT}
5 |
6 | # Install essential tools.
7 | RUN apt-get update \
8 | && apt-get install -y --no-install-recommends \
9 | make \
10 | curl \
11 | git-all \
12 | python3 \
13 | python3-pip \
14 | sudo \
15 | wget \
16 | && rm -rf /var/lib/apt/lists/* \
17 | && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
18 | && apt-get clean
19 |
20 | COPY cc.py /bin/cook
21 | RUN chmod +x /bin/cook
22 |
23 | ENV TZ=UTC
24 |
25 | USER ${USERNAME}
26 |
27 | COPY requirements.txt requirements.txt
28 | RUN pip3 install -r requirements.txt
29 |
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/README.md:
--------------------------------------------------------------------------------
1 | # Single DC L3LS
2 |
3 | This lab is tested for:
4 |
5 | cEOS-lab version: 4.32.0.1F
6 | Containerlab Version: 0.54.2
7 | Codespace Container Size
8 | CPUs: 8
9 | memory: 32 GB
10 | storage: 64 GB
11 |
12 | Last reviewed: 05/06/2024
13 |
14 | Please check the lab materials:
15 |
16 | - [Lab Documentation](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/avd-single-dc-l3ls/avd-single-dc-l3ls/)
17 | - [HTML Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/avd-single-dc-l3ls.html)
18 | - [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/avd-single-dc-l3ls.pdf)
19 |
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/README.md:
--------------------------------------------------------------------------------
1 | # Small EVPN MLAG
2 |
3 | This lab is tested for:
4 |
5 | cEOS-lab version: 4.32.1F
6 | Containerlab Version: 0.56.0
7 | Codespace Container Size
8 | CPUs: 4
9 | memory: 16 GB
10 | storage: 32 GB
11 |
12 | Last reviewed: 02/08/2024
13 |
14 | Please check the lab materials:
15 |
16 | - [Lab Documentation](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/playground-small-evpn-mlag/playground-small-evpn-mlag/)
17 | - [HTML Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/playground-small-evpn-mlag.html)
18 | - [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/playground-small-evpn-mlag.pdf)
19 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/group_vars/AVD_FABRIC_ENDPOINTS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | servers:
3 |
4 | - name: h01
5 | adapters:
6 | - mode: trunk
7 | switch_ports:
8 | - Ethernet10
9 | - Ethernet10
10 | switches:
11 | - l01
12 | - l02
13 | vlans: 100
14 | ethernet_segment:
15 | short_esi: dead:beef:0001
16 | port_channel:
17 | mode: active
18 |
19 | - name: h02
20 | adapters:
21 | - mode: trunk
22 | switch_ports:
23 | - Ethernet20
24 | - Ethernet20
25 | switches:
26 | - l03
27 | - l04
28 | vlans: 200
29 | ethernet_segment:
30 | short_esi: dead:beef:0002
31 | port_channel:
32 | mode: active
33 |
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/README.md:
--------------------------------------------------------------------------------
1 | # Build Containerlab with cEOS
2 |
3 | This lab is tested for:
4 |
5 | cEOS-lab version: 4.30.6M
6 | Containerlab Version: 0.54.2
7 | Codespace Container Size
8 | CPUs: 4
9 | memory: 16 GB
10 | storage: 32 GB
11 |
12 | Last reviewed: 02/05/2024
13 |
14 | Please check the lab materials:
15 |
16 | - [Lab Documentation](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/clab-build-containerlab-with-ceos/)
17 | - [HTML Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/clab-build-containerlab-with-ceos.html)
18 | - [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/clab-build-containerlab-with-ceos.pdf)
19 |
--------------------------------------------------------------------------------
/docs/credits.md:
--------------------------------------------------------------------------------
1 | ---
2 | hide:
3 | - feedback
4 | ---
5 |
6 | # Credits
7 |
8 | - Arista cEOS-lab image is the core of every demo
9 | - Github infrastructure for public repos. Github Actions, Packages, Pages and Codespaces - they are all amazing. One-click demo would not be possible without them.
10 | - [Containerlab](https://containerlab.dev/) significantly reduces complexity of deploying labs in DevOps way. Containerlab distributed under conditions of [BSD-3 license](https://github.com/srl-labs/containerlab/blob/main/LICENSE).
11 | - [Arista EOS downloader](https://pypi.org/project/eos-downloader/) (or sometimes it's shell alternative) - allows to uncage amazing cEOS-lab images hidden behind [arista.com](arista.com) login
12 |
--------------------------------------------------------------------------------
/docs/construction-area.md:
--------------------------------------------------------------------------------
1 | # Construction Area
2 |
3 | !!! Warning "Construction Area for Contributors"
4 |
5 | DO NOT ENTER! :skull_and_crossbones:{ .heartbeat }
6 |
7 | 
8 |
9 | This document is created from a Cookiecutter template.
10 | If you see this message - the lab is not finished and likely published for testing purposes.
11 | Don't use it unless you are the author.
12 |
13 | !!! Warning "WARNING!"
14 |
15 | This area is for contributors only!
16 | It is required to build and test lab environments before they will be published.
17 | If you are not a contributer testing your environment, please leave this area! :skull_and_crossbones:{ .heartbeat }
18 |
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/README.md:
--------------------------------------------------------------------------------
1 | # AVD Extended Workshop, Part 1
2 |
3 | This lab is tested for:
4 |
5 | cEOS-lab version: 4.30.6M
6 | Containerlab Version: 0.54.2
7 | Codespace Container Size
8 | CPUs: 4
9 | memory: 16 GB
10 | storage: 32 GB
11 |
12 | Last reviewed: 29/04/2024
13 |
14 | Please check the lab materials:
15 |
16 | - [Lab Documentation](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/avd-avd-extended-workshop--part-1/avd-avd-extended-workshop--part-1/)
17 | - [HTML Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/avd-avd-extended-workshop--part-1.html)
18 | - [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/avd-avd-extended-workshop--part-1.pdf)
19 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/README.md:
--------------------------------------------------------------------------------
1 | # CVaaS and AVD Demo, EVPN AA
2 |
3 | This lab is tested for:
4 |
5 | cEOS-lab version: 4.32.1F
6 | Containerlab Version: 0.54.2
7 | Codespace Container Size
8 | CPUs: 8
9 | memory: 32 GB
10 | storage: 64 GB
11 |
12 | Last reviewed: 18/06/2024
13 |
14 | Please check the lab materials:
15 |
16 | - [Lab Documentation](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/cvaas-cvaas-and-avd-demo--evpn-aa/cvaas-cvaas-and-avd-demo--evpn-aa/)
17 | - [HTML Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/cvaas-cvaas-and-avd-demo--evpn-aa.html)
18 | - [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/cvaas-cvaas-and-avd-demo--evpn-aa.pdf)
19 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/README.md:
--------------------------------------------------------------------------------
1 | # CVaaS and AVD Demo, EVPN MLAG
2 |
3 | This lab is tested for:
4 |
5 | cEOS-lab version: 4.32.1F
6 | Containerlab Version: 0.54.2
7 | Codespace Container Size
8 | CPUs: 8
9 | memory: 32 GB
10 | storage: 64 GB
11 |
12 | Last reviewed: 18/06/2024
13 |
14 | Please check the lab materials:
15 |
16 | - [Lab Documentation](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/cvaas-cvaas-and-avd-demo--evpn-mlag/cvaas-cvaas-and-avd-demo--evpn-mlag/)
17 | - [HTML Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/cvaas-cvaas-and-avd-demo--evpn-mlag.html)
18 | - [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/cvaas-cvaas-and-avd-demo--evpn-mlag.pdf)
19 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/README.md:
--------------------------------------------------------------------------------
1 | # CVaaS and AVD Demo, EVPN AA - Small Size Lab
2 |
3 | This lab is tested for:
4 |
5 | cEOS-lab version: 4.32.1F
6 | Containerlab Version: 0.54.2
7 | Codespace Container Size
8 | CPUs: 4
9 | memory: 16 GB
10 | storage: 32 GB
11 |
12 | Last reviewed: 18/06/2024
13 |
14 | Please check the lab materials:
15 |
16 | - [Lab Documentation](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/cvaas-cvaas-and-avd-demo--evpn-aa/cvaas-cvaas-and-avd-demo--evpn-aa/)
17 | - [HTML Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/cvaas-cvaas-and-avd-demo--evpn-aa.html)
18 | - [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/cvaas-cvaas-and-avd-demo--evpn-aa.pdf)
19 |
--------------------------------------------------------------------------------
/.github/workflows/avd-single-dc-l3ls.yml:
--------------------------------------------------------------------------------
1 | ---
2 | name: build container for Single DC L3LS
3 |
4 | on:
5 | push:
6 | branches: [main]
7 | paths:
8 | - .github/workflows/avd-single-dc-l3ls.yml
9 | - .github/workflows/container-build-child-workflow.yml
10 | - containers/avd-single-dc-l3ls/**
11 | workflow_dispatch:
12 | branches: [main]
13 |
14 | jobs:
15 | build-demo-container:
16 | uses: ./.github/workflows/container-build-child-workflow.yml
17 | with:
18 | container_name: "avd"
19 | image_tags: "single-dc-l3ls"
20 | from_image: "ghcr.io/aristanetworks/avd/dev"
21 | from_variant: "python3.11"
22 | username: "avd"
23 | clab_version: "0.54.2"
24 | ceos_lab_version: "4.32.0.1F"
25 | git_init: True
26 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/README.md:
--------------------------------------------------------------------------------
1 | # CVaaS and AVD Demo, EVPN MLAG - Small Size Lab
2 |
3 | This lab is tested for:
4 |
5 | cEOS-lab version: 4.32.1F
6 | Containerlab Version: 0.54.2
7 | Codespace Container Size
8 | CPUs: 4
9 | memory: 16 GB
10 | storage: 32 GB
11 |
12 | Last reviewed: 18/06/2024
13 |
14 | Please check the lab materials:
15 |
16 | - [Lab Documentation](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/cvaas-cvaas-and-avd-demo--evpn-mlag/cvaas-cvaas-and-avd-demo--evpn-mlag/)
17 | - [HTML Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/cvaas-cvaas-and-avd-demo--evpn-mlag.html)
18 | - [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/cvaas-cvaas-and-avd-demo--evpn-mlag.pdf)
19 |
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/init-configs/h01.cfg:
--------------------------------------------------------------------------------
1 | hostname s01
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 10.0.1.1/16
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/init-configs/l01.cfg:
--------------------------------------------------------------------------------
1 | hostname l01
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 10.0.2.1/16
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/init-configs/l02.cfg:
--------------------------------------------------------------------------------
1 | hostname l02
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 10.0.2.2/16
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/init-configs/s01.cfg:
--------------------------------------------------------------------------------
1 | hostname s01
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 10.0.1.1/16
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/init-configs/s02.cfg:
--------------------------------------------------------------------------------
1 | hostname s02
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 10.0.1.2/16
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/docs/avd/workshops/avd-extended-workshop/avd-extended-workshop.md:
--------------------------------------------------------------------------------
1 | # AVD Extended Workshop
2 |
3 | !!! Warning "WARNING!"
4 |
5 | - This demo is under construction!
6 |
7 | ## Demo Details
8 |
9 | !!! Success "Container Requirements"
10 |
11 | CPUs: 4
12 | Memory: 16 GB
13 | Storage: 32 GB
14 |
15 | :material-checkbox-marked-outline: Works with default Codespaces sizing!
16 |
17 | [Start The EVPN AA Demo](https://codespaces.new/{{gh.repository}}?quickstart=1&devcontainer_path=.devcontainer%2Favd_extended_workshop%2Fdevcontainer.json){ .md-button .md-button--primary target=_blank }
18 |
19 | [Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/avd_extended_workshop.html){ target=_blank }
20 | [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/avd_extended_workshop.pdf){ target=_blank }
21 |
--------------------------------------------------------------------------------
/.github/workflows/clab-build-containerlab-with-ceos.yml:
--------------------------------------------------------------------------------
1 | ---
2 | name: build container for Build Containerlab with cEOS
3 |
4 | on:
5 | push:
6 | branches: [main]
7 | paths:
8 | - .github/workflows/clab-build-containerlab-with-ceos.yml
9 | - .github/workflows/container-build-child-workflow.yml
10 | - containers/clab-build-containerlab-with-ceos/**
11 | workflow_dispatch:
12 | branches: [main]
13 |
14 | jobs:
15 | build-demo-container:
16 | uses: ./.github/workflows/container-build-child-workflow.yml
17 | with:
18 | container_name: "clab"
19 | image_tags: "build-containerlab-with-ceos"
20 | from_image: "ghcr.io/aristanetworks/avd/base"
21 | from_variant: "python3.11"
22 | username: "avd"
23 | clab_version: "0.54.2"
24 | ceos_lab_version: "4.30.6M"
25 | git_init: True
26 |
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-leaf1a.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf1a
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.101/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-leaf1b.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf1b
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.102/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-leaf1c.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf1c
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.151/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-leaf2a.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf2a
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.103/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-leaf2b.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf2b
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.104/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-leaf2c.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf2c
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.152/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-spine1.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-spine1
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.11/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-spine2.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-spine2
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.12/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/.github/workflows/cvaas-cvaas-and-avd-demo--evpn-aa.yml:
--------------------------------------------------------------------------------
1 | ---
2 | name: build container for CVaaS and AVD Demo, EVPN AA
3 |
4 | on:
5 | push:
6 | branches: [main]
7 | paths:
8 | - .github/workflows/cvaas-cvaas-and-avd-demo--evpn-aa.yml
9 | - .github/workflows/container-build-child-workflow.yml
10 | - containers/cvaas-cvaas-and-avd-demo--evpn-aa/**
11 | workflow_dispatch:
12 | branches: [main]
13 |
14 | jobs:
15 | build-demo-container:
16 | uses: ./.github/workflows/container-build-child-workflow.yml
17 | with:
18 | container_name: "cvaas"
19 | image_tags: "cvaas-and-avd-demo--evpn-aa"
20 | from_image: "ghcr.io/aristanetworks/avd/universal"
21 | from_variant: "python3.11-avd-v4.7.1"
22 | username: "avd"
23 | clab_version: "0.54.2"
24 | ceos_lab_version: "4.32.1F"
25 | git_init: True
26 |
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-leaf1-server1.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-spine1
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.11/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/clab/init-configs/dc1-leaf2-server1.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-spine2
2 | !
3 | no aaa root
4 | !
5 | username ansible privilege 15 role network-admin secret ansible
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.12/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/.github/workflows/avd-avd-extended-workshop--part-1.yml:
--------------------------------------------------------------------------------
1 | ---
2 | name: build container for AVD Extended Workshop, Part 1
3 |
4 | on:
5 | push:
6 | branches: [main]
7 | paths:
8 | - .github/workflows/avd-avd-extended-workshop--part-1.yml
9 | - .github/workflows/container-build-child-workflow.yml
10 | - containers/avd-avd-extended-workshop--part-1/**
11 | workflow_dispatch:
12 | branches: [main]
13 |
14 | jobs:
15 | build-demo-container:
16 | uses: ./.github/workflows/container-build-child-workflow.yml
17 | with:
18 | container_name: "avd"
19 | image_tags: "avd-extended-workshop--part-1"
20 | from_image: "ghcr.io/aristanetworks/avd/universal"
21 | from_variant: "python3.11-avd-v4.7.1"
22 | username: "avd"
23 | clab_version: "0.54.2"
24 | ceos_lab_version: "4.30.6M"
25 | git_init: True
26 |
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-leaf1a.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf1a
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.101/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-leaf1b.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf1b
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.102/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-leaf1c.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf1c
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.151/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-leaf2a.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf2a
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.103/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-leaf2b.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf2b
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.104/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-leaf2c.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-leaf2c
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.152/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-spine1.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-spine1
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.11/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-spine2.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-spine2
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.12/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/.github/workflows/cvaas-cvaas-and-avd-demo--evpn-mlag.yml:
--------------------------------------------------------------------------------
1 | ---
2 | name: build container for CVaaS and AVD Demo, EVPN MLAG
3 |
4 | on:
5 | push:
6 | branches: [main]
7 | paths:
8 | - .github/workflows/cvaas-cvaas-and-avd-demo--evpn-mlag.yml
9 | - .github/workflows/container-build-child-workflow.yml
10 | - containers/cvaas-cvaas-and-avd-demo--evpn-mlag/**
11 | workflow_dispatch:
12 | branches: [main]
13 |
14 | jobs:
15 | build-demo-container:
16 | uses: ./.github/workflows/container-build-child-workflow.yml
17 | with:
18 | container_name: "cvaas"
19 | image_tags: "cvaas-and-avd-demo--evpn-mlag"
20 | from_image: "ghcr.io/aristanetworks/avd/universal"
21 | from_variant: "python3.11-avd-v4.7.1"
22 | username: "avd"
23 | clab_version: "0.54.2"
24 | ceos_lab_version: "4.32.1F"
25 | git_init: True
26 |
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-leaf1-server1.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-spine1
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.11/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/clab/init-configs/dc1-leaf2-server1.cfg:
--------------------------------------------------------------------------------
1 | hostname dc1-spine2
2 | !
3 | no aaa root
4 | !
5 | username arista privilege 15 role network-admin secret arista
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address 172.16.1.12/24
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 172.16.1.1
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/CSVs/atd-l3ls/lab_cabling_plan.csv:
--------------------------------------------------------------------------------
1 | local_switch,local_interface,remote_switch,remote_interface
2 | dc1-leaf1a,eth1,dc1-spine1,eth1
3 | dc1-leaf1a,eth2,dc1-spine2,eth1
4 | dc1-leaf1b,eth1,dc1-spine1,eth2
5 | dc1-leaf1b,eth2,dc1-spine2,eth2
6 | dc1-leaf2a,eth1,dc1-spine1,eth3
7 | dc1-leaf2a,eth2,dc1-spine2,eth3
8 | dc1-leaf2b,eth1,dc1-spine1,eth4
9 | dc1-leaf2b,eth2,dc1-spine2,eth4
10 | dc1-leaf1a,eth3,dc1-leaf1b,eth3
11 | dc1-leaf1a,eth4,dc1-leaf1b,eth4
12 | dc1-leaf2a,eth3,dc1-leaf2b,eth3
13 | dc1-leaf2a,eth4,dc1-leaf2b,eth4
14 | dc1-leaf1c,eth1,dc1-leaf1a,eth8
15 | dc1-leaf1c,eth2,dc1-leaf1b,eth8
16 | dc1-leaf2c,eth1,dc1-leaf2a,eth8
17 | dc1-leaf2c,eth2,dc1-leaf2b,eth8
18 | dc1-leaf1-server1,eth1,dc1-leaf1a,eth5
19 | dc1-leaf1-server1,eth2,dc1-leaf1b,eth5
20 | dc1-leaf1-server1,eth3,dc1-leaf1c,eth5
21 | dc1-leaf2-server1,eth1,dc1-leaf2a,eth5
22 | dc1-leaf2-server1,eth2,dc1-leaf2b,eth5
23 | dc1-leaf2-server1,eth3,dc1-leaf2c,eth5
--------------------------------------------------------------------------------
/containers/cvaas-cvaas-and-avd-demo--evpn-aa/.devcontainer/addAliases.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 |
6 | echo "alias s01='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.1.1'" >> ~/.zshrc
7 | echo "alias s02='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.1.2'" >> ~/.zshrc
8 | echo "alias l01='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.1'" >> ~/.zshrc
9 | echo "alias l02='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.2'" >> ~/.zshrc
10 | echo "alias l03='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.3'" >> ~/.zshrc
11 | echo "alias l04='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.4'" >> ~/.zshrc
12 |
13 | echo "alias h01='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.3.1'" >> ~/.zshrc
14 | echo "alias h02='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.3.2'" >> ~/.zshrc
--------------------------------------------------------------------------------
/containers/cvaas-cvaas-and-avd-demo--evpn-mlag/.devcontainer/addAliases.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 |
6 | echo "alias s01='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.1.1'" >> ~/.zshrc
7 | echo "alias s02='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.1.2'" >> ~/.zshrc
8 | echo "alias l01='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.1'" >> ~/.zshrc
9 | echo "alias l02='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.2'" >> ~/.zshrc
10 | echo "alias l03='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.3'" >> ~/.zshrc
11 | echo "alias l04='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.2.4'" >> ~/.zshrc
12 |
13 | echo "alias h01='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.3.1'" >> ~/.zshrc
14 | echo "alias h02='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@10.0.3.2'" >> ~/.zshrc
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/topology.clab.yml:
--------------------------------------------------------------------------------
1 | name: build-clab-with-ceos
2 | prefix: ""
3 |
4 | mgmt:
5 | network: custom_mgmt
6 | ipv4-subnet: 10.0.0.0/16
7 |
8 | topology:
9 | kinds:
10 | ceos:
11 | enforce-startup-config: true
12 | image: arista/ceos:4.30.6M
13 | defaults:
14 | kind: ceos
15 | nodes:
16 | s01:
17 | mgmt-ipv4: 10.0.1.1
18 | s02:
19 | mgmt-ipv4: 10.0.1.2
20 | l01:
21 | mgmt-ipv4: 10.0.2.1
22 | l02:
23 | mgmt-ipv4: 10.0.2.2
24 | h01:
25 | mgmt-ipv4: 10.0.3.1
26 |
27 | links:
28 | - endpoints: ["l01:eth1", "s01:eth1"]
29 | - endpoints: ["l01:eth2", "s02:eth1"]
30 | - endpoints: ["l02:eth1", "s01:eth2"]
31 | - endpoints: ["l02:eth2", "s02:eth2"]
32 | - endpoints: ["l01:eth3", "l02:eth3"]
33 | - endpoints: ["l01:eth4", "l02:eth4"]
34 | - endpoints: ["h01:eth1", "l01:eth10"]
35 | - endpoints: ["h01:eth2", "l02:eth10"]
36 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/inventory.yml:
--------------------------------------------------------------------------------
1 | ---
2 | all:
3 | children:
4 |
5 | CV_SERVERS:
6 | hosts:
7 | lab_cv_instance:
8 | ansible_host: "www.cv-staging.corp.arista.io"
9 |
10 | AVD_FABRIC:
11 | children:
12 |
13 | AVD_FABRIC_SPINES:
14 | vars:
15 | type: spine
16 | hosts:
17 | s01:
18 | ansible_host: 10.0.1.1
19 | s02:
20 | ansible_host: 10.0.1.2
21 |
22 | AVD_FABRIC_LEAFS:
23 | vars:
24 | type: l3leaf
25 | children:
26 | pod0:
27 | hosts:
28 | l01:
29 | ansible_host: 10.0.2.1
30 | l02:
31 | ansible_host: 10.0.2.2
32 |
33 | AVD_FABRIC_ENDPOINTS:
34 | children:
35 | AVD_FABRIC_LEAFS:
36 |
37 | AVD_FABRIC_TENANTS:
38 | children:
39 | AVD_FABRIC_LEAFS:
40 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/inventory.yml:
--------------------------------------------------------------------------------
1 | ---
2 | all:
3 | children:
4 |
5 | CV_SERVERS:
6 | hosts:
7 | lab_cv_instance:
8 | ansible_host: "www.cv-staging.corp.arista.io"
9 |
10 | AVD_FABRIC:
11 | children:
12 |
13 | AVD_FABRIC_SPINES:
14 | vars:
15 | type: spine
16 | hosts:
17 | s01:
18 | ansible_host: 10.0.1.1
19 | s02:
20 | ansible_host: 10.0.1.2
21 |
22 | AVD_FABRIC_LEAFS:
23 | vars:
24 | type: l3leaf
25 | children:
26 | pod0:
27 | hosts:
28 | l01:
29 | ansible_host: 10.0.2.1
30 | l02:
31 | ansible_host: 10.0.2.2
32 |
33 | AVD_FABRIC_ENDPOINTS:
34 | children:
35 | AVD_FABRIC_LEAFS:
36 |
37 | AVD_FABRIC_TENANTS:
38 | children:
39 | AVD_FABRIC_LEAFS:
40 |
--------------------------------------------------------------------------------
/.devcontainer/playground-small-evpn-mlag/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/playground:small-evpn-mlag",
3 | // containerEnv set the variables applied to entire container
4 | "containerEnv": {
5 | "ARISTA_TOKEN": "${localEnv:ARTOKEN}",
6 | "CONTAINERWSF": "${containerWorkspaceFolder}",
7 | "GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}"
8 | },
9 | "secrets": {
10 | "ARTOKEN": {
11 | "description": "token to auto-download EOS images from arista.com."
12 | // "documentationUrl": "https://example.com/link/to/info"
13 | }
14 | },
15 | "hostRequirements": {
16 | "cpus": 4,
17 | "memory": "16gb",
18 | "storage": "32gb"
19 | },
20 | "postCreateCommand": "postCreate.sh",
21 | "workspaceMount": "source=${localWorkspaceFolder}/demos/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
22 | "workspaceFolder": "/playground-small-evpn-mlag"
23 | }
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/playbooks/check_the_lab.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Run show commands on all switches and print the output
3 | hosts: [l01,l02,s01,s02]
4 | vars:
5 | ansible_connection: httpapi
6 | ansible_network_os: eos
7 | ansible_user: admin
8 | ansible_password: admin
9 | ansible_become: yes
10 | ansible_become_method: enable
11 | ansible_httpapi_use_ssl: true
12 | ansible_httpapi_validate_certs: false
13 | tasks:
14 | - name: run show commands
15 | arista.eos.eos_command:
16 | commands:
17 | - show ip bgp summary
18 | - show port-channel dense
19 | - show lldp neighbors
20 | register: cli_output
21 | - name: display result
22 | ansible.builtin.debug:
23 | msg:
24 | - "show ip bgp summary"
25 | - "{{ cli_output.stdout_lines[0] }}"
26 | - "show port-channel dense"
27 | - "{{ cli_output.stdout_lines[1] }}"
28 | - "show lldp neighbors"
29 | - "{{ cli_output.stdout_lines[2] }}"
30 |
--------------------------------------------------------------------------------
/containers/clab-build-containerlab-with-ceos/.devcontainer/postCreate.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 | # replace all markdown vars in demo directory
6 | grep -rl '{{gh.repo_name}}' . --exclude-dir .git | xargs sed -i 's/{{gh.repo_name}}/'"${GITHUB_REPOSITORY##*/}"'/g'
7 | grep -rl '{{gh.org_name}}' . --exclude-dir .git | xargs sed -i 's/{{gh.org_name}}/'"${GITHUB_REPOSITORY%%/*}"'/g'
8 | grep -rl '{{gh.repository}}' . --exclude-dir .git | xargs sed -i 's@{{gh.repository}}@'"${GITHUB_REPOSITORY}"'@g'
9 |
10 | ardl get eos --image-type cEOS --version ${CEOS_LAB_VERSION} --import-docker
11 |
12 | # init demo dir as Git repo if requested for this demo env
13 | if ${GIT_INIT}; then
14 | cd ${CONTAINERWSF}
15 | git init
16 | git config --global --add safe.directory ${PWD}
17 | if [ -z "$(git config user.name)" ]; then git config user.name "Lab User"; fi
18 | if [ -z "$(git config user.email)" ]; then git config user.email user@one-click.lab; fi
19 | git add .
20 | git commit -m "git init"
21 | fi
22 |
--------------------------------------------------------------------------------
/demos/avd-single-dc-l3ls/Makefile:
--------------------------------------------------------------------------------
1 | CURRENT_DIR := $(shell pwd)
2 |
3 | .PHONY: help
4 | help: ## Display help message
5 | @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}'
6 |
7 | .PHONY: start
8 | start: ## Deploy ceos lab
9 | sudo containerlab deploy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --max-workers 10 --timeout 5m --reconfigure
10 |
11 | .PHONY: stop
12 | stop: ## Destroy ceos lab
13 | sudo containerlab destroy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --cleanup
14 |
15 | .PHONY: build
16 | build: ## Generate AVD configs
17 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook build.yml
18 |
19 | .PHONY: deploy_eapi
20 | deploy_eapi: ## Deploy AVD configs using eAPI
21 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook deploy.yml
22 |
23 | .PHONY: deploy_cvp
24 | deploy_cvp: ## Deploy AVD configs using eAPI
25 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook deploy-cvp.yml
26 |
--------------------------------------------------------------------------------
/.devcontainer/avd-extended-workshop-part-1/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/avd-extended-workshop-part-1:latest",
3 | // containerEnv set the variables applied to entire container
4 | "containerEnv": {
5 | "ARISTA_TOKEN": "${localEnv:ARTOKEN}",
6 | "CONTAINERWSF": "${containerWorkspaceFolder}",
7 | "GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}"
8 | },
9 | "secrets": {
10 | "ARTOKEN": {
11 | "description": "token to auto-download EOS images from arista.com."
12 | // "documentationUrl": "https://example.com/link/to/info"
13 | }
14 | },
15 | "hostRequirements": {
16 | "cpus": 4,
17 | "memory": "16gb",
18 | "storage": "32gb"
19 | },
20 | "postCreateCommand": "postCreate.sh",
21 | "workspaceMount": "source=${localWorkspaceFolder}/demos/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
22 | "workspaceFolder": "/avd-extended-workshop-part-1"
23 | }
--------------------------------------------------------------------------------
/.devcontainer/avd-avd-extended-workshop--part-1/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/avd:avd-extended-workshop--part-1",
3 | // containerEnv set the variables applied to entire container
4 | "containerEnv": {
5 | "ARISTA_TOKEN": "${localEnv:ARTOKEN}",
6 | "CONTAINERWSF": "${containerWorkspaceFolder}",
7 | "GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}"
8 | },
9 | "secrets": {
10 | "ARTOKEN": {
11 | "description": "token to auto-download EOS images from arista.com."
12 | // "documentationUrl": "https://example.com/link/to/info"
13 | }
14 | },
15 | "hostRequirements": {
16 | "cpus": 4,
17 | "memory": "16gb",
18 | "storage": "32gb"
19 | },
20 | "postCreateCommand": "postCreate.sh",
21 | "workspaceMount": "source=${localWorkspaceFolder}/demos/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
22 | "workspaceFolder": "/avd-avd-extended-workshop--part-1"
23 | }
--------------------------------------------------------------------------------
/.devcontainer/clab-build-containerlab-with-ceos/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/clab:build-containerlab-with-ceos",
3 | // containerEnv set the variables applied to entire container
4 | "containerEnv": {
5 | "ARISTA_TOKEN": "${localEnv:ARTOKEN}",
6 | "CONTAINERWSF": "${containerWorkspaceFolder}",
7 | "GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}"
8 | },
9 | "secrets": {
10 | "ARTOKEN": {
11 | "description": "token to auto-download EOS images from arista.com."
12 | // "documentationUrl": "https://example.com/link/to/info"
13 | }
14 | },
15 | "hostRequirements": {
16 | "cpus": 4,
17 | "memory": "16gb",
18 | "storage": "32gb"
19 | },
20 | "postCreateCommand": "postCreate.sh",
21 | "workspaceMount": "source=${localWorkspaceFolder}/demos/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
22 | "workspaceFolder": "/clab-build-containerlab-with-ceos"
23 | }
--------------------------------------------------------------------------------
/demos/avd-avd-extended-workshop--part-1/Makefile:
--------------------------------------------------------------------------------
1 | CURRENT_DIR := $(shell pwd)
2 |
3 | .PHONY: help
4 | help: ## Display help message
5 | @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}'
6 |
7 | .PHONY: start
8 | start: ## Deploy ceos lab
9 | sudo containerlab deploy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --max-workers 10 --timeout 5m --reconfigure
10 |
11 | .PHONY: stop
12 | stop: ## Destroy ceos lab
13 | sudo containerlab destroy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --cleanup
14 |
15 | .PHONY: build
16 | build: ## Generate AVD configs
17 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook build.yml
18 |
19 | .PHONY: deploy_eapi
20 | deploy_eapi: ## Deploy AVD configs using eAPI
21 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook deploy.yml
22 |
23 | .PHONY: deploy_cvp
24 | deploy_cvp: ## Deploy AVD configs using eAPI
25 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook deploy-cvp.yml
26 |
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/demos/{{cookiecutter.__demo_slug}}/README.md.jinja:
--------------------------------------------------------------------------------
1 | # {{cookiecutter.demo_name}}
2 |
3 | This lab is tested for:
4 |
5 | cEOS-lab version: {{ cookiecutter.ceos_lab_version }}
6 | Containerlab Version: {{ cookiecutter.clab_version }}
7 | Codespace Container Size
8 | CPUs: {{ cookiecutter.container_size.cpus }}
9 | memory: {{ cookiecutter.container_size.memory }}
10 | storage: {{ cookiecutter.container_size.storage }}
11 |
12 | Last reviewed: {% now 'local', '%d/%m/%Y' %}
13 |
14 | Please check the lab materials:
15 |
16 | - [Lab Documentation](https://{% raw %}{{gh.org_name}}{%endraw%}.github.io/{% raw %}{{gh.repo_name}}{%endraw%}/{{cookiecutter.__demo_slug}}/{{cookiecutter.__demo_slug}}/)
17 | - [HTML Slides](https://{% raw %}{{gh.org_name}}{%endraw%}.github.io/{% raw %}{{gh.repo_name}}{%endraw%}/slides/{{cookiecutter.__demo_slug}}.html)
18 | - [PDF Slides](https://{% raw %}{{gh.org_name}}{%endraw%}.github.io/{% raw %}{{gh.repo_name}}{%endraw%}/pdfs/{{cookiecutter.__demo_slug}}.pdf)
19 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/inventory.yml:
--------------------------------------------------------------------------------
1 | ---
2 | all:
3 | children:
4 |
5 | CV_SERVERS:
6 | hosts:
7 | lab_cv_instance:
8 | ansible_host: "www.cv-staging.corp.arista.io"
9 |
10 | AVD_FABRIC:
11 | children:
12 |
13 | AVD_FABRIC_SPINES:
14 | vars:
15 | type: spine
16 | hosts:
17 | s01:
18 | ansible_host: 10.0.1.1
19 | s02:
20 | ansible_host: 10.0.1.2
21 |
22 | AVD_FABRIC_LEAFS:
23 | vars:
24 | type: l3leaf
25 | children:
26 | pod0:
27 | hosts:
28 | l01:
29 | ansible_host: 10.0.2.1
30 | l02:
31 | ansible_host: 10.0.2.2
32 | pod1:
33 | hosts:
34 | l03:
35 | ansible_host: 10.0.2.3
36 | l04:
37 | ansible_host: 10.0.2.4
38 |
39 | AVD_FABRIC_ENDPOINTS:
40 | children:
41 | AVD_FABRIC_LEAFS:
42 |
43 | AVD_FABRIC_TENANTS:
44 | children:
45 | AVD_FABRIC_LEAFS:
46 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/inventory.yml:
--------------------------------------------------------------------------------
1 | ---
2 | all:
3 | children:
4 |
5 | CV_SERVERS:
6 | hosts:
7 | lab_cv_instance:
8 | ansible_host: "www.cv-staging.corp.arista.io"
9 |
10 | AVD_FABRIC:
11 | children:
12 |
13 | AVD_FABRIC_SPINES:
14 | vars:
15 | type: spine
16 | hosts:
17 | s01:
18 | ansible_host: 10.0.1.1
19 | s02:
20 | ansible_host: 10.0.1.2
21 |
22 | AVD_FABRIC_LEAFS:
23 | vars:
24 | type: l3leaf
25 | children:
26 | pod0:
27 | hosts:
28 | l01:
29 | ansible_host: 10.0.2.1
30 | l02:
31 | ansible_host: 10.0.2.2
32 | pod1:
33 | hosts:
34 | l03:
35 | ansible_host: 10.0.2.3
36 | l04:
37 | ansible_host: 10.0.2.4
38 |
39 | AVD_FABRIC_ENDPOINTS:
40 | children:
41 | AVD_FABRIC_LEAFS:
42 |
43 | AVD_FABRIC_TENANTS:
44 | children:
45 | AVD_FABRIC_LEAFS:
46 |
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/demos/{{cookiecutter.__demo_slug}}/clab/init-configs/{% for hostname in cookiecutter.__lab.lab_host_inventory %}.cfg.jinja:
--------------------------------------------------------------------------------
1 | hostname {{ cookiecutter.__lab.lab_inventory[cookiecutter_file_index].hostname }}
2 | !
3 | no aaa root
4 | !
5 | username {{ cookiecutter.clab_user }} privilege 15 role network-admin secret {{ cookiecutter.clab_password }}
6 | !
7 | vrf instance MGMT
8 | !
9 | ip name-server vrf MGMT 8.8.8.8
10 | dns domain avd.lab
11 | !
12 | ntp local-interface vrf MGMT Management0
13 | ntp server vrf MGMT time.apple.com
14 | ntp server vrf MGMT time.google.com
15 | ntp server vrf MGMT time.windows.com
16 | !
17 | service routing protocols model multi-agent
18 | !
19 | management api http-commands
20 | protocol https
21 | no shutdown
22 | !
23 | vrf MGMT
24 | no shutdown
25 | !
26 | aaa authorization exec default local
27 | !
28 | interface Management0
29 | vrf MGMT
30 | ip address {{ cookiecutter.__lab.lab_inventory[cookiecutter_file_index].mgmt_ip }}/{{ cookiecutter.clab_mgmt_mask }}
31 | !
32 | ip route vrf MGMT 0.0.0.0/0 {{ cookiecutter.clab_mgmt_gw }}
33 | !
34 | ip name-server vrf MGMT 8.8.8.8
35 | !
36 | end
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.associations": {
3 | "**.yml.jinja": "jinja-yaml",
4 | "**.sh.jinja": "jinja-shell",
5 | ".md.jinja": "jinja-markdown",
6 | "**.json.jinja": "jinja-json",
7 | "**.py.jinja": "jinja-python",
8 | "**Dockerfile.jinja": "jinja-dockerfile",
9 | "**.txt.jinja": "jinja",
10 | "**Makefile.jinja": "jinja",
11 | "**.cfg.jinja": "jinja"
12 | },
13 | "markdown.marp.themes": [
14 | "./slides/themes/dracula.css",
15 | "./slides/themes/beam.css",
16 | "./slides/themes/einstein.css",
17 | "./slides/themes/jobs.css"
18 | ],
19 | "markdownlint.config": {
20 | "default": true,
21 | // allow multiple H1s for Marp
22 | "MD025": false,
23 | "MD033": {
24 | "allowed_elements": [
25 | "div",
26 | "span",
27 | "style",
28 | "br",
29 | "sup"
30 | ]
31 | },
32 | // disable as MD046 is not behaving correctly with Mkdocs
33 | "MD046": false
34 | },
35 | "markdown.marp.enableHtml": true
36 | }
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/init-configs/l01.cfg:
--------------------------------------------------------------------------------
1 | hostname l01
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.2.1/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/init-configs/l02.cfg:
--------------------------------------------------------------------------------
1 | hostname l02
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.2.2/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/init-configs/l03.cfg:
--------------------------------------------------------------------------------
1 | hostname l03
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.2.3/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/init-configs/l04.cfg:
--------------------------------------------------------------------------------
1 | hostname l04
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.2.4/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/init-configs/s01.cfg:
--------------------------------------------------------------------------------
1 | hostname s01
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.1.1/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/clab/init-configs/s02.cfg:
--------------------------------------------------------------------------------
1 | hostname s02
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.1.2/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/clab/init-configs/l01.cfg:
--------------------------------------------------------------------------------
1 | hostname l01
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.2.1/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/clab/init-configs/l02.cfg:
--------------------------------------------------------------------------------
1 | hostname l02
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.2.2/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/clab/init-configs/s01.cfg:
--------------------------------------------------------------------------------
1 | hostname s01
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.1.1/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/clab/init-configs/s02.cfg:
--------------------------------------------------------------------------------
1 | hostname s02
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | ntp local-interface vrf MGMT Management0
17 | ntp server vrf MGMT time.apple.com
18 | ntp server vrf MGMT time.google.com
19 | ntp server vrf MGMT time.windows.com
20 | !
21 | service routing protocols model multi-agent
22 | !
23 | management api http-commands
24 | protocol https
25 | no shutdown
26 | !
27 | vrf MGMT
28 | no shutdown
29 | !
30 | aaa authorization exec default local
31 | !
32 | interface Management0
33 | vrf MGMT
34 | ip address 10.0.1.2/16
35 | !
36 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
37 | !
38 | ip name-server vrf MGMT 8.8.8.8
39 | !
40 | end
--------------------------------------------------------------------------------
/.cc/cookiecutter.json:
--------------------------------------------------------------------------------
1 | {
2 | "demo_name": "A New Demo",
3 | "demo_group": "unsorted",
4 | "__demo_name": "{{ cookiecutter.demo_name.lower().replace(' ','-').replace(',','-').replace('[','').replace(']','') }}",
5 | "__demo_group": "{{ cookiecutter.demo_group.lower() }}",
6 | "__demo_slug": "{{ cookiecutter.__demo_group }}-{{ cookiecutter.__demo_name }}",
7 | "demo_author": "Petr Ankudinov",
8 | "from_image": "ghcr.io/aristanetworks/avd/universal",
9 | "from_variant": "python3.11-avd-v4.7.1",
10 | "container_username": "avd",
11 | "clab_version": "0.54.2",
12 | "ceos_lab_version": "4.30.6M",
13 | "git_init": true,
14 | "container_size": [
15 | {"cpus": 2, "memory": "8 GB", "storage": "32 GB"},
16 | {"cpus": 4, "memory": "16 GB", "storage": "32 GB"},
17 | {"cpus": 8, "memory": "32 GB", "storage": "64 GB"},
18 | {"cpus": 16, "memory": "64 GB", "storage": "128 GB"},
19 | {"cpus": 32, "memory": "128 GB", "storage": "128 GB"}
20 | ],
21 | "cv_api_token_required": false,
22 | "clab_mgmt_subnet": "10.0.0.0",
23 | "clab_mgmt_mask": "16",
24 | "clab_mgmt_gw": "10.0.0.1",
25 | "clab_user": "arista",
26 | "clab_password": "arista",
27 | "__lab": null
28 | }
--------------------------------------------------------------------------------
/containers/avd-single-dc-l3ls/.devcontainer/postCreate.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 | # replace all markdown vars in demo directory
6 | grep -rl '{{gh.repo_name}}' . --exclude-dir .git | xargs sed -i 's/'{{gh.repo_name}}'/'"${GITHUB_REPOSITORY##*/}"'/g'
7 | grep -rl '{{gh.org_name}}' . --exclude-dir .git | xargs sed -i 's/'{{gh.org_name}}'/'"${GITHUB_REPOSITORY%%/*}"'/g'
8 | grep -rl '{{gh.repository}}' . --exclude-dir .git | xargs sed -i 's@'{{gh.repository}}'@'"${GITHUB_REPOSITORY}"'@g'
9 |
10 | ardl get eos --image-type cEOS --version ${CEOS_LAB_VERSION} --import-docker
11 |
12 | # copy AVD inventory
13 | mkdir ${CONTAINERWSF}/avd_inventory/
14 | cp -r /home/avd/.ansible/collections/ansible_collections/arista/avd/examples/single-dc-l3ls/* ${CONTAINERWSF}/avd_inventory/
15 |
16 | # init demo dir as Git repo if requested for this demo env
17 | if ${GIT_INIT}; then
18 | cd ${CONTAINERWSF}
19 | git init
20 | git config --global --add safe.directory ${PWD}
21 | if [ -z "$(git config user.name)" ]; then git config user.name "Lab User"; fi
22 | if [ -z "$(git config user.email)" ]; then git config user.email user@one-click.lab; fi
23 | git add .
24 | git commit -m "git init"
25 | fi
26 |
--------------------------------------------------------------------------------
/containers/clab-build-containerlab-with-ceos/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG FROM_IMAGE
2 | ARG FROM_VARIANT
3 |
4 | FROM ${FROM_IMAGE}:${FROM_VARIANT}
5 |
6 | ARG USERNAME
7 | ARG CLAB_VERSION
8 | ARG CEOS_LAB_VERSION_ARG
9 | ARG GIT_INIT_ARG
10 |
11 | ENV CEOS_LAB_VERSION=${CEOS_LAB_VERSION_ARG}
12 | ENV GIT_INIT=${GIT_INIT_ARG}
13 |
14 | USER root
15 |
16 | # install some basic tools inside the container
17 | RUN apt-get update \
18 | && apt-get install -y --no-install-recommends \
19 | sshpass \
20 | iputils-ping \
21 | htop \
22 | tcpdump \
23 | && rm -rf /var/lib/apt/lists/* \
24 | && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
25 | && apt-get clean
26 |
27 | # copy postCreate script
28 | COPY ./postCreate.sh /bin/postCreate.sh
29 | RUN chmod +x /bin/postCreate.sh
30 | # copy addAliases script
31 | COPY ./addAliases.sh /bin/addAliases.sh
32 | RUN chmod +x /bin/addAliases.sh
33 |
34 | USER ${USERNAME}
35 |
36 | RUN /bin/addAliases.sh
37 |
38 | # install the latest yamllint and eos-downloader
39 | RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v ${CLAB_VERSION} \
40 | && pip3 install --user yamllint \
41 | && pip install --user "eos-downloader>=0.10.1"
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/init-configs/l01.cfg:
--------------------------------------------------------------------------------
1 | hostname l01
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.2.1/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/init-configs/l02.cfg:
--------------------------------------------------------------------------------
1 | hostname l02
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.2.2/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/init-configs/l03.cfg:
--------------------------------------------------------------------------------
1 | hostname l03
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.2.3/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/init-configs/l04.cfg:
--------------------------------------------------------------------------------
1 | hostname l04
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.2.4/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/init-configs/s01.cfg:
--------------------------------------------------------------------------------
1 | hostname s01
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.1.1/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/clab/init-configs/s02.cfg:
--------------------------------------------------------------------------------
1 | hostname s02
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.1.2/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/clab/init-configs/l01.cfg:
--------------------------------------------------------------------------------
1 | hostname l01
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.2.1/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/clab/init-configs/l02.cfg:
--------------------------------------------------------------------------------
1 | hostname l02
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.2.2/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/clab/init-configs/s01.cfg:
--------------------------------------------------------------------------------
1 | hostname s01
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.1.1/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/clab/init-configs/s02.cfg:
--------------------------------------------------------------------------------
1 | hostname s02
2 | !
3 | daemon TerminAttr
4 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
5 | no shutdown
6 | !
7 | no aaa root
8 | !
9 | username arista privilege 15 role network-admin secret arista
10 | !
11 | vrf instance MGMT
12 | !
13 | ip name-server vrf MGMT 8.8.8.8
14 | dns domain avd.lab
15 | !
16 | platform tfa
17 | personality arfa
18 | !
19 | ntp local-interface vrf MGMT Management0
20 | ntp server vrf MGMT time.apple.com
21 | ntp server vrf MGMT time.google.com
22 | ntp server vrf MGMT time.windows.com
23 | !
24 | service routing protocols model multi-agent
25 | !
26 | management api http-commands
27 | protocol https
28 | no shutdown
29 | !
30 | vrf MGMT
31 | no shutdown
32 | !
33 | aaa authorization exec default local
34 | !
35 | interface Management0
36 | vrf MGMT
37 | ip address 10.0.1.2/16
38 | !
39 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
40 | !
41 | ip name-server vrf MGMT 8.8.8.8
42 | !
43 | end
--------------------------------------------------------------------------------
/containers/playground-small-evpn-mlag/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG FROM_IMAGE
2 | ARG FROM_VARIANT
3 |
4 | FROM ${FROM_IMAGE}:${FROM_VARIANT}
5 |
6 | ARG USERNAME
7 | ARG CLAB_VERSION
8 | ARG CEOS_LAB_VERSION_ARG
9 | ARG GIT_INIT_ARG
10 |
11 | ENV CEOS_LAB_VERSION=${CEOS_LAB_VERSION_ARG}
12 | ENV GIT_INIT=${GIT_INIT_ARG}
13 |
14 | USER root
15 |
16 | # install some basic tools inside the container
17 | RUN apt-get update \
18 | && apt-get install -y --no-install-recommends \
19 | sshpass \
20 | iputils-ping \
21 | htop \
22 | && rm -rf /var/lib/apt/lists/* \
23 | && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
24 | && apt-get clean
25 |
26 | # copy postCreate script
27 | COPY ./postCreate.sh /bin/postCreate.sh
28 | RUN chmod +x /bin/postCreate.sh
29 | # copy addAliases script
30 | COPY ./addAliases.sh /bin/addAliases.sh
31 | RUN chmod +x /bin/addAliases.sh
32 |
33 | USER ${USERNAME}
34 |
35 | RUN /bin/addAliases.sh
36 |
37 | # install the latest containerlab, yamllint, cook-and-cut and eos-downloader
38 | RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v ${CLAB_VERSION} \
39 | && pip3 install --user yamllint \
40 | && pip install --user "eos-downloader>=0.10.1" \
41 | && pip install --user passlib
42 |
--------------------------------------------------------------------------------
/containers/avd-avd-extended-workshop--part-1/.devcontainer/addAliases.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 |
6 | echo "alias dc1-spine1='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.11'" >> ~/.zshrc
7 | echo "alias dc1-spine2='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.12'" >> ~/.zshrc
8 | echo "alias dc1-leaf1a='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.101'" >> ~/.zshrc
9 | echo "alias dc1-leaf1b='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.102'" >> ~/.zshrc
10 | echo "alias dc1-leaf2a='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.103'" >> ~/.zshrc
11 | echo "alias dc1-leaf2b='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.104'" >> ~/.zshrc
12 | echo "alias dc1-leaf1c='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.151'" >> ~/.zshrc
13 | echo "alias dc1-leaf2c='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.152'" >> ~/.zshrc
14 |
15 | echo "alias dc1-leaf1-server1='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.201'" >> ~/.zshrc
16 | echo "alias dc1-leaf2-server1='sshpass -p arista ssh -o \"StrictHostKeyChecking no\" arista@172.16.1.202'" >> ~/.zshrc
--------------------------------------------------------------------------------
/containers/avd-single-dc-l3ls/.devcontainer/addAliases.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 |
6 | echo "alias dc1-spine1='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.11'" >> ~/.zshrc
7 | echo "alias dc1-spine2='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.12'" >> ~/.zshrc
8 | echo "alias dc1-leaf1a='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.101'" >> ~/.zshrc
9 | echo "alias dc1-leaf1b='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.102'" >> ~/.zshrc
10 | echo "alias dc1-leaf2a='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.103'" >> ~/.zshrc
11 | echo "alias dc1-leaf2b='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.104'" >> ~/.zshrc
12 | echo "alias dc1-leaf1c='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.151'" >> ~/.zshrc
13 | echo "alias dc1-leaf2c='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.152'" >> ~/.zshrc
14 |
15 | echo "alias dc1-leaf1-server1='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.201'" >> ~/.zshrc
16 | echo "alias dc1-leaf2-server1='sshpass -p ansible ssh -o \"StrictHostKeyChecking no\" ansible@172.16.1.202'" >> ~/.zshrc
--------------------------------------------------------------------------------
/containers/avd-single-dc-l3ls/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG FROM_IMAGE
2 | ARG FROM_VARIANT
3 |
4 | FROM ${FROM_IMAGE}:${FROM_VARIANT}
5 |
6 | ARG USERNAME
7 | ARG CLAB_VERSION
8 | ARG CEOS_LAB_VERSION_ARG
9 | ARG GIT_INIT_ARG
10 |
11 | ENV CEOS_LAB_VERSION=${CEOS_LAB_VERSION_ARG}
12 | ENV GIT_INIT=${GIT_INIT_ARG}
13 |
14 | USER root
15 |
16 | # install some basic tools inside the container
17 | RUN apt-get update \
18 | && apt-get install -y --no-install-recommends \
19 | sshpass \
20 | iputils-ping \
21 | htop \
22 | && rm -rf /var/lib/apt/lists/* \
23 | && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
24 | && apt-get clean
25 |
26 | # copy postCreate script
27 | COPY ./postCreate.sh /bin/postCreate.sh
28 | RUN chmod +x /bin/postCreate.sh
29 | # copy addAliases script
30 | COPY ./addAliases.sh /bin/addAliases.sh
31 | RUN chmod +x /bin/addAliases.sh
32 |
33 | USER ${USERNAME}
34 |
35 | RUN /bin/addAliases.sh
36 |
37 | # install the latest containerlab, yamllint, cook-and-cut and eos-downloader
38 | RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v ${CLAB_VERSION} \
39 | && pip3 install --user yamllint \
40 | && pip install --user "eos-downloader>=0.10.1" \
41 | && pip install --user passlib \
42 | && pip3 install anta==0.12.0
43 |
--------------------------------------------------------------------------------
/containers/avd-avd-extended-workshop--part-1/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG FROM_IMAGE
2 | ARG FROM_VARIANT
3 |
4 | FROM ${FROM_IMAGE}:${FROM_VARIANT}
5 |
6 | ARG USERNAME
7 | ARG CLAB_VERSION
8 | ARG CEOS_LAB_VERSION_ARG
9 | ARG GIT_INIT_ARG
10 |
11 | ENV CEOS_LAB_VERSION=${CEOS_LAB_VERSION_ARG}
12 | ENV GIT_INIT=${GIT_INIT_ARG}
13 |
14 | USER root
15 |
16 | # install some basic tools inside the container
17 | RUN apt-get update \
18 | && apt-get install -y --no-install-recommends \
19 | sshpass \
20 | iputils-ping \
21 | htop \
22 | && rm -rf /var/lib/apt/lists/* \
23 | && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
24 | && apt-get clean
25 |
26 | # copy postCreate script
27 | COPY ./postCreate.sh /bin/postCreate.sh
28 | RUN chmod +x /bin/postCreate.sh
29 | # copy addAliases script
30 | COPY ./addAliases.sh /bin/addAliases.sh
31 | RUN chmod +x /bin/addAliases.sh
32 |
33 | USER ${USERNAME}
34 |
35 | RUN /bin/addAliases.sh
36 |
37 | # install the latest containerlab, yamllint, cook-and-cut and eos-downloader
38 | RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v ${CLAB_VERSION} \
39 | && pip3 install --user yamllint \
40 | && pip install --user "eos-downloader>=0.10.1" \
41 | && pip install --user passlib \
42 | && pip3 install anta==0.12.0
43 |
--------------------------------------------------------------------------------
/containers/cvaas-cvaas-and-avd-demo--evpn-aa/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG FROM_IMAGE
2 | ARG FROM_VARIANT
3 |
4 | FROM ${FROM_IMAGE}:${FROM_VARIANT}
5 |
6 | ARG USERNAME
7 | ARG CLAB_VERSION
8 | ARG CEOS_LAB_VERSION_ARG
9 | ARG GIT_INIT_ARG
10 |
11 | ENV CEOS_LAB_VERSION=${CEOS_LAB_VERSION_ARG}
12 | ENV GIT_INIT=${GIT_INIT_ARG}
13 |
14 | USER root
15 |
16 | # install some basic tools inside the container
17 | RUN apt-get update \
18 | && apt-get install -y --no-install-recommends \
19 | sshpass \
20 | iputils-ping \
21 | htop \
22 | && rm -rf /var/lib/apt/lists/* \
23 | && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
24 | && apt-get clean
25 |
26 | # copy postCreate script
27 | COPY ./postCreate.sh /bin/postCreate.sh
28 | RUN chmod +x /bin/postCreate.sh
29 | # copy addAliases script
30 | COPY ./addAliases.sh /bin/addAliases.sh
31 | RUN chmod +x /bin/addAliases.sh
32 |
33 | USER ${USERNAME}
34 |
35 | RUN /bin/addAliases.sh
36 |
37 | # install the latest containerlab, yamllint, cook-and-cut and eos-downloader
38 | RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v ${CLAB_VERSION} \
39 | && pip3 install --user yamllint \
40 | && pip install --user "eos-downloader>=0.10.1" \
41 | && pip install --user passlib \
42 | && pip3 install anta==0.13.0
43 |
--------------------------------------------------------------------------------
/containers/cvaas-cvaas-and-avd-demo--evpn-mlag/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG FROM_IMAGE
2 | ARG FROM_VARIANT
3 |
4 | FROM ${FROM_IMAGE}:${FROM_VARIANT}
5 |
6 | ARG USERNAME
7 | ARG CLAB_VERSION
8 | ARG CEOS_LAB_VERSION_ARG
9 | ARG GIT_INIT_ARG
10 |
11 | ENV CEOS_LAB_VERSION=${CEOS_LAB_VERSION_ARG}
12 | ENV GIT_INIT=${GIT_INIT_ARG}
13 |
14 | USER root
15 |
16 | # install some basic tools inside the container
17 | RUN apt-get update \
18 | && apt-get install -y --no-install-recommends \
19 | sshpass \
20 | iputils-ping \
21 | htop \
22 | && rm -rf /var/lib/apt/lists/* \
23 | && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
24 | && apt-get clean
25 |
26 | # copy postCreate script
27 | COPY ./postCreate.sh /bin/postCreate.sh
28 | RUN chmod +x /bin/postCreate.sh
29 | # copy addAliases script
30 | COPY ./addAliases.sh /bin/addAliases.sh
31 | RUN chmod +x /bin/addAliases.sh
32 |
33 | USER ${USERNAME}
34 |
35 | RUN /bin/addAliases.sh
36 |
37 | # install the latest containerlab, yamllint, cook-and-cut and eos-downloader
38 | RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v ${CLAB_VERSION} \
39 | && pip3 install --user yamllint \
40 | && pip install --user "eos-downloader>=0.10.1" \
41 | && pip install --user passlib \
42 | && pip3 install anta==0.13.0
43 |
--------------------------------------------------------------------------------
/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "dockerfile": "./Dockerfile",
4 | "context": ".",
5 | "args": {
6 | "FROM_IMAGE": "mcr.microsoft.com/devcontainers/base",
7 | "FROM_VARIANT": "ubuntu-22.04",
8 | "USERNAME": "vscode"
9 | }
10 | },
11 | "customizations": {
12 | "vscode": {
13 | "extensions": [
14 | "ms-python.python",
15 | "samuelcolvin.jinjahtml",
16 | "oderwat.indent-rainbow",
17 | "AykutSarac.jsoncrack-vscode",
18 | "hilleer.yaml-plus-json",
19 | // marp preview extension
20 | "marp-team.marp-vscode",
21 | // errors and highlighters
22 | "mechatroner.rainbow-csv",
23 | // excalidraw, drawio and tldraw
24 | "pomdtr.excalidraw-editor",
25 | "hediet.vscode-drawio",
26 | "tldraw-org.tldraw-vscode",
27 | // markdown
28 | "yzhang.markdown-all-in-one",
29 | "bierner.markdown-checkbox",
30 | "DavidAnson.vscode-markdownlint",
31 | // various tools
32 | "tuxtina.json2yaml",
33 | "mutantdino.resourcemonitor"
34 | ]
35 | }
36 | },
37 | "forwardPorts": [8000]
38 | }
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/containers/{{cookiecutter.__demo_slug}}/.devcontainer/Dockerfile.jinja:
--------------------------------------------------------------------------------
1 | ARG FROM_IMAGE
2 | ARG FROM_VARIANT
3 |
4 | FROM ${FROM_IMAGE}:${FROM_VARIANT}
5 |
6 | ARG USERNAME
7 | ARG CLAB_VERSION
8 | ARG CEOS_LAB_VERSION_ARG
9 | ARG GIT_INIT_ARG
10 |
11 | ENV CEOS_LAB_VERSION=${CEOS_LAB_VERSION_ARG}
12 | ENV GIT_INIT=${GIT_INIT_ARG}
13 |
14 | USER root
15 |
16 | # install some basic tools inside the container
17 | RUN apt-get update \
18 | && apt-get install -y --no-install-recommends \
19 | sshpass \
20 | iputils-ping \
21 | htop \
22 | && rm -rf /var/lib/apt/lists/* \
23 | && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
24 | && apt-get clean
25 |
26 | # copy postCreate script
27 | COPY ./postCreate.sh /bin/postCreate.sh
28 | RUN chmod +x /bin/postCreate.sh
29 | # copy addAliases script
30 | COPY ./addAliases.sh /bin/addAliases.sh
31 | RUN chmod +x /bin/addAliases.sh
32 |
33 | USER ${USERNAME}
34 |
35 | RUN /bin/addAliases.sh
36 |
37 | # install the latest containerlab, yamllint, cook-and-cut and eos-downloader
38 | RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v ${CLAB_VERSION} \
39 | && pip3 install --user yamllint \
40 | && pip install --user "eos-downloader>=0.10.1" \
41 | && pip install --user passlib \
42 | && pip3 install anta==0.12.0
43 |
--------------------------------------------------------------------------------
/containers/avd-avd-extended-workshop--part-1/.devcontainer/postCreate.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 | # replace all markdown vars in demo directory
6 | grep -rl '{{gh.repo_name}}' . --exclude-dir .git | xargs sed -i 's/{{gh.repo_name}}/'"${GITHUB_REPOSITORY##*/}"'/g'
7 | grep -rl '{{gh.org_name}}' . --exclude-dir .git | xargs sed -i 's/{{gh.org_name}}/'"${GITHUB_REPOSITORY%%/*}"'/g'
8 | grep -rl '{{gh.repository}}' . --exclude-dir .git | xargs sed -i 's@{{gh.repository}}@'"${GITHUB_REPOSITORY}"'@g'
9 |
10 | CVTOKEN=$(curl -H "Authorization: Bearer ${CV_API_TOKEN}" "https://www.cv-staging.corp.arista.io/api/v3/services/admin.Enrollment/AddEnrollmentToken" -d '{"enrollmentToken":{"reenrollDevices":["*"],"validFor":"24h"}}' | sed -n 's|.*"token":"\([^"]*\)".*|\1|p')
11 | echo "$CVTOKEN" > ${CONTAINERWSF}/clab/cv-onboarding-token
12 | ardl get eos --image-type cEOS --version ${CEOS_LAB_VERSION} --import-docker
13 |
14 | # init demo dir as Git repo if requested for this demo env
15 | if ${GIT_INIT}; then
16 | cd ${CONTAINERWSF}
17 | git init
18 | git config --global --add safe.directory ${PWD}
19 | if [ -z "$(git config user.name)" ]; then git config user.name "Lab User"; fi
20 | if [ -z "$(git config user.email)" ]; then git config user.email user@one-click.lab; fi
21 | git add .
22 | git commit -m "git init"
23 | fi
24 |
--------------------------------------------------------------------------------
/containers/playground-small-evpn-mlag/.devcontainer/postCreate.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 | # replace all markdown vars in demo directory
6 | grep -rl '{{gh.repo_name}}' . --exclude-dir .git | xargs sed -i 's/'{{gh.repo_name}}'/'"${GITHUB_REPOSITORY##*/}"'/g'
7 | grep -rl '{{gh.org_name}}' . --exclude-dir .git | xargs sed -i 's/'{{gh.org_name}}'/'"${GITHUB_REPOSITORY%%/*}"'/g'
8 | grep -rl '{{gh.repository}}' . --exclude-dir .git | xargs sed -i 's@'{{gh.repository}}'@'"${GITHUB_REPOSITORY}"'@g'
9 |
10 | CVTOKEN=$(curl -H "Authorization: Bearer ${CV_API_TOKEN}" "https://www.cv-staging.corp.arista.io/api/v3/services/admin.Enrollment/AddEnrollmentToken" -d '{"enrollmentToken":{"reenrollDevices":["*"],"validFor":"24h"}}' | sed -n 's|.*"token":"\([^"]*\)".*|\1|p')
11 | echo "$CVTOKEN" > ${CONTAINERWSF}/clab/cv-onboarding-token
12 | ardl get eos --image-type cEOS --version ${CEOS_LAB_VERSION} --import-docker
13 |
14 | # init demo dir as Git repo if requested for this demo env
15 | if ${GIT_INIT}; then
16 | cd ${CONTAINERWSF}
17 | git init
18 | git config --global --add safe.directory ${PWD}
19 | if [ -z "$(git config user.name)" ]; then git config user.name "Lab User"; fi
20 | if [ -z "$(git config user.email)" ]; then git config user.email user@one-click.lab; fi
21 | git add .
22 | git commit -m "git init"
23 | fi
24 |
--------------------------------------------------------------------------------
/containers/avd_extended_workshop/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG FROM_IMAGE
2 | ARG FROM_VARIANT
3 |
4 | FROM ${FROM_IMAGE}:${FROM_VARIANT}
5 |
6 | ARG USERNAME
7 | ARG CLAB_VERSION
8 |
9 | ARG CEOS_LAB_VERSION_ARG
10 | ARG GIT_INIT_ARG
11 |
12 | ENV CEOS_LAB_VERSION=${CEOS_LAB_VERSION_ARG}
13 | ENV GIT_INIT=${GIT_INIT_ARG}
14 |
15 | USER root
16 |
17 | # install some basic tools inside the container
18 | RUN apt-get update \
19 | && apt-get install -y --no-install-recommends \
20 | sshpass \
21 | iputils-ping \
22 | htop \
23 | && rm -rf /var/lib/apt/lists/* \
24 | && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
25 | && apt-get clean
26 |
27 | # install yq
28 | ARG _YQ_VERSION
29 | ARG _YQ_BINARY
30 | RUN wget https://github.com/mikefarah/yq/releases/download/${_YQ_VERSION}/${_YQ_BINARY} -O /usr/bin/yq \
31 | && chmod +x /usr/bin/yq
32 |
33 | # copy postCreate script
34 | COPY ./postCreate.sh /bin/postCreate.sh
35 | RUN chmod +x /bin/postCreate.sh
36 |
37 | USER ${USERNAME}
38 |
39 | # install the latest containerlab, yamllint, cook-and-cut and eos-downloader
40 | RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v ${CLAB_VERSION} \
41 | && pip3 install --user yamllint \
42 | && pip install --user "eos-downloader>=0.10.1" \
43 | && pip install --user passlib \
44 | && pip3 install anta==0.12.0
45 |
--------------------------------------------------------------------------------
/docs/avd/workshops/avd-extended-workshop-part-1/avd-extended-workshop-part-1.md:
--------------------------------------------------------------------------------
1 | # AVD Extended Workshop, Part 1
2 |
3 | ## Demo Details
4 |
5 | !!! Success "Container Requirements"
6 |
7 | CPUs: 4
8 | Memory: 16gb
9 | Storage: 32gb
10 |
11 | :material-checkbox-marked-outline: Works with default Codespaces sizing!
12 |
13 | [Start "AVD Extended Workshop, Part 1" in Codespace](https://codespaces.new/{{gh.repository}}?quickstart=1&devcontainer_path=.devcontainer%2Favd-extended-workshop-part-1%2Fdevcontainer.json){ .md-button .md-button--primary target=_blank}
14 |
15 | [Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/avd-extended-workshop-part-1.html){ target=_blank }
16 | [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/avd-extended-workshop-part-1.pdf){ target=_blank }
17 |
18 | !!! Info "Last reviewed: 15/04/2024"
19 |
20 | Demos and labs review over 6 month age may be outdated.
21 |
22 | ## How To Run The Demo
23 |
24 | ???+ Tip "Wait until cEOS-lab image will be imported"
25 |
26 | You can confirm if image was imported correctly with `docker image ls`
27 |
28 | !!! Warning "Lab Documents Not Finished"
29 |
30 | This document is created from a Cookiecutter template.
31 | If you see this message - the lab is not finished and likely published for testing purposes.
32 | Don't use it unless you are the author.
33 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/avd_inventory/group_vars/AVD_FABRIC.yml:
--------------------------------------------------------------------------------
1 | ---
2 | fabric_name: AVD_FABRIC
3 |
4 | # Spine Switches
5 | spine:
6 | defaults:
7 | platform: cEOS
8 | bgp_as: 65100
9 | loopback_ipv4_pool: 100.64.255.0/24
10 | nodes:
11 | - name: s01
12 | id: 1
13 | mgmt_ip: 10.0.1.1/16
14 | - name: s02
15 | id: 2
16 | mgmt_ip: 10.0.1.2/16
17 |
18 | l3leaf:
19 | defaults:
20 | platform: cEOS
21 | loopback_ipv4_pool: 100.65.255.0/24
22 | loopback_ipv4_offset: 2
23 | vtep_loopback_ipv4_pool: 100.65.254.0/24
24 | uplink_interfaces: ['Ethernet1', 'Ethernet2']
25 | uplink_switches: ['s01', 's02']
26 | uplink_ipv4_pool: 100.65.0.0/24
27 | virtual_router_mac_address: 00:1c:73:00:dc:01
28 | spanning_tree_mode: mstp
29 | spanning_tree_priority: 16384
30 | node_groups:
31 | - group: l01
32 | bgp_as: 65101
33 | nodes:
34 | - name: l01
35 | id: 1
36 | mgmt_ip: 10.0.2.1/16
37 | uplink_switch_interfaces: ['Ethernet1', 'Ethernet1']
38 | filter:
39 | tags: [l01]
40 | - group: l02
41 | bgp_as: 65102
42 | nodes:
43 | - name: l02
44 | id: 2
45 | mgmt_ip: 10.0.2.2/16
46 | uplink_switch_interfaces: ['Ethernet2', 'Ethernet2']
47 | filter:
48 | tags: [l02]
49 |
50 | p2p_uplinks_mtu: 9214
51 |
--------------------------------------------------------------------------------
/containers/avd-single-dc-l3ls/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "dockerfile": "Dockerfile",
4 | "args": {
5 | "FROM_IMAGE": "${localEnv:FROM_IMAGE}",
6 | "FROM_VARIANT": "${localEnv:FROM_VARIANT}",
7 | "USERNAME": "${localEnv:USERNAME}",
8 | "CLAB_VERSION": "${localEnv:CLAB_VERSION}",
9 | "CEOS_LAB_VERSION_ARG": "${localEnv:CEOS_LAB_VERSION_ARG}",
10 | "GIT_INIT_ARG": "${localEnv:GIT_INIT_ARG}"
11 | }
12 | },
13 | "customizations": {
14 | "vscode": {
15 | "extensions": [
16 | // git essentials
17 | "piotrpalarz.vscode-gitignore-generator",
18 | "mhutchie.git-graph",
19 | "donjayamanne.githistory",
20 | // spell checker
21 | "streetsidesoftware.code-spell-checker",
22 | // drawio and tldraw
23 | // excalidraw is pre-installed in universal
24 | "hediet.vscode-drawio",
25 | "tldraw-org.tldraw-vscode",
26 | // markdown
27 | "yzhang.markdown-all-in-one",
28 | "bierner.markdown-checkbox",
29 | "DavidAnson.vscode-markdownlint",
30 | // various tools
31 | "tuxtina.json2yaml",
32 | "mutantdino.resourcemonitor"
33 | ]
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/containers/avd-avd-extended-workshop--part-1/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "dockerfile": "Dockerfile",
4 | "args": {
5 | "FROM_IMAGE": "${localEnv:FROM_IMAGE}",
6 | "FROM_VARIANT": "${localEnv:FROM_VARIANT}",
7 | "USERNAME": "${localEnv:USERNAME}",
8 | "CLAB_VERSION": "${localEnv:CLAB_VERSION}",
9 | "CEOS_LAB_VERSION_ARG": "${localEnv:CEOS_LAB_VERSION_ARG}",
10 | "GIT_INIT_ARG": "${localEnv:GIT_INIT_ARG}"
11 | }
12 | },
13 | "customizations": {
14 | "vscode": {
15 | "extensions": [
16 | // git essentials
17 | "piotrpalarz.vscode-gitignore-generator",
18 | "mhutchie.git-graph",
19 | "donjayamanne.githistory",
20 | // spell checker
21 | "streetsidesoftware.code-spell-checker",
22 | // drawio and tldraw
23 | // excalidraw is pre-installed in universal
24 | "hediet.vscode-drawio",
25 | "tldraw-org.tldraw-vscode",
26 | // markdown
27 | "yzhang.markdown-all-in-one",
28 | "bierner.markdown-checkbox",
29 | "DavidAnson.vscode-markdownlint",
30 | // various tools
31 | "tuxtina.json2yaml",
32 | "mutantdino.resourcemonitor"
33 | ]
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/containers/cvaas-cvaas-and-avd-demo--evpn-aa/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "dockerfile": "Dockerfile",
4 | "args": {
5 | "FROM_IMAGE": "${localEnv:FROM_IMAGE}",
6 | "FROM_VARIANT": "${localEnv:FROM_VARIANT}",
7 | "USERNAME": "${localEnv:USERNAME}",
8 | "CLAB_VERSION": "${localEnv:CLAB_VERSION}",
9 | "CEOS_LAB_VERSION_ARG": "${localEnv:CEOS_LAB_VERSION_ARG}",
10 | "GIT_INIT_ARG": "${localEnv:GIT_INIT_ARG}"
11 | }
12 | },
13 | "customizations": {
14 | "vscode": {
15 | "extensions": [
16 | // git essentials
17 | "piotrpalarz.vscode-gitignore-generator",
18 | "mhutchie.git-graph",
19 | "donjayamanne.githistory",
20 | // spell checker
21 | "streetsidesoftware.code-spell-checker",
22 | // drawio and tldraw
23 | // excalidraw is pre-installed in universal
24 | "hediet.vscode-drawio",
25 | "tldraw-org.tldraw-vscode",
26 | // markdown
27 | "yzhang.markdown-all-in-one",
28 | "bierner.markdown-checkbox",
29 | "DavidAnson.vscode-markdownlint",
30 | // various tools
31 | "tuxtina.json2yaml",
32 | "mutantdino.resourcemonitor"
33 | ]
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/containers/cvaas-cvaas-and-avd-demo--evpn-mlag/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "dockerfile": "Dockerfile",
4 | "args": {
5 | "FROM_IMAGE": "${localEnv:FROM_IMAGE}",
6 | "FROM_VARIANT": "${localEnv:FROM_VARIANT}",
7 | "USERNAME": "${localEnv:USERNAME}",
8 | "CLAB_VERSION": "${localEnv:CLAB_VERSION}",
9 | "CEOS_LAB_VERSION_ARG": "${localEnv:CEOS_LAB_VERSION_ARG}",
10 | "GIT_INIT_ARG": "${localEnv:GIT_INIT_ARG}"
11 | }
12 | },
13 | "customizations": {
14 | "vscode": {
15 | "extensions": [
16 | // git essentials
17 | "piotrpalarz.vscode-gitignore-generator",
18 | "mhutchie.git-graph",
19 | "donjayamanne.githistory",
20 | // spell checker
21 | "streetsidesoftware.code-spell-checker",
22 | // drawio and tldraw
23 | // excalidraw is pre-installed in universal
24 | "hediet.vscode-drawio",
25 | "tldraw-org.tldraw-vscode",
26 | // markdown
27 | "yzhang.markdown-all-in-one",
28 | "bierner.markdown-checkbox",
29 | "DavidAnson.vscode-markdownlint",
30 | // various tools
31 | "tuxtina.json2yaml",
32 | "mutantdino.resourcemonitor"
33 | ]
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/containers/{{cookiecutter.__demo_slug}}/.devcontainer/postCreate.sh.jinja:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set +e
4 |
5 | # replace all markdown vars in demo directory
6 | grep -rl {% raw %}'{{gh.repo_name}}'{%endraw%} . --exclude-dir .git | xargs sed -i 's/{% raw %}'{{gh.repo_name}}'{%endraw%}/'"${GITHUB_REPOSITORY##*/}"'/g'
7 | grep -rl {% raw %}'{{gh.org_name}}'{%endraw%} . --exclude-dir .git | xargs sed -i 's/{% raw %}'{{gh.org_name}}'{%endraw%}/'"${GITHUB_REPOSITORY%%/*}"'/g'
8 | grep -rl {% raw %}'{{gh.repository}}'{%endraw%} . --exclude-dir .git | xargs sed -i 's@{% raw %}'{{gh.repository}}'{%endraw%}@'"${GITHUB_REPOSITORY}"'@g'
9 |
10 | CVTOKEN=$(curl -H "Authorization: Bearer ${CV_API_TOKEN}" "https://www.cv-staging.corp.arista.io/api/v3/services/admin.Enrollment/AddEnrollmentToken" -d '{"enrollmentToken":{"reenrollDevices":["*"],"validFor":"24h"}}' | sed -n 's|.*"token":"\([^"]*\)".*|\1|p')
11 | echo "$CVTOKEN" > ${CONTAINERWSF}/clab/cv-onboarding-token
12 | ardl get eos --image-type cEOS --version ${CEOS_LAB_VERSION} --import-docker
13 |
14 | # init demo dir as Git repo if requested for this demo env
15 | if ${GIT_INIT}; then
16 | cd ${CONTAINERWSF}
17 | git init
18 | git config --global --add safe.directory ${PWD}
19 | if [ -z "$(git config user.name)" ]; then git config user.name "Lab User"; fi
20 | if [ -z "$(git config user.email)" ]; then git config user.email user@one-click.lab; fi
21 | git add .
22 | git commit -m "git init"
23 | fi
24 |
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/containers/{{cookiecutter.__demo_slug}}/.devcontainer/devcontainer.json.jinja:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "dockerfile": "Dockerfile",
4 | "args": {
5 | "FROM_IMAGE": "${localEnv:FROM_IMAGE}",
6 | "FROM_VARIANT": "${localEnv:FROM_VARIANT}",
7 | "USERNAME": "${localEnv:USERNAME}",
8 | "CLAB_VERSION": "${localEnv:CLAB_VERSION}",
9 | "CEOS_LAB_VERSION_ARG": "${localEnv:CEOS_LAB_VERSION_ARG}",
10 | "GIT_INIT_ARG": "${localEnv:GIT_INIT_ARG}"
11 | }
12 | },
13 | "customizations": {
14 | "vscode": {
15 | "extensions": [
16 | // git essentials
17 | "piotrpalarz.vscode-gitignore-generator",
18 | "mhutchie.git-graph",
19 | "donjayamanne.githistory",
20 | // spell checker
21 | "streetsidesoftware.code-spell-checker",
22 | // drawio and tldraw
23 | // excalidraw is pre-installed in universal
24 | "hediet.vscode-drawio",
25 | "tldraw-org.tldraw-vscode",
26 | // markdown
27 | "yzhang.markdown-all-in-one",
28 | "bierner.markdown-checkbox",
29 | "DavidAnson.vscode-markdownlint",
30 | // various tools
31 | "tuxtina.json2yaml",
32 | "mutantdino.resourcemonitor"
33 | ]
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/avd_inventory/group_vars/AVD_FABRIC.yml:
--------------------------------------------------------------------------------
1 | ---
2 | fabric_name: AVD_FABRIC
3 |
4 | # Spine Switches
5 | spine:
6 | defaults:
7 | platform: cEOS
8 | bgp_as: 65100
9 | loopback_ipv4_pool: 100.64.255.0/24
10 | nodes:
11 | - name: s01
12 | id: 1
13 | mgmt_ip: 10.0.1.1/16
14 | - name: s02
15 | id: 2
16 | mgmt_ip: 10.0.1.2/16
17 |
18 | l3leaf:
19 | defaults:
20 | platform: cEOS
21 | loopback_ipv4_pool: 100.65.255.0/24
22 | loopback_ipv4_offset: 2
23 | vtep_loopback_ipv4_pool: 100.65.254.0/24
24 | uplink_interfaces: ['Ethernet1', 'Ethernet2']
25 | uplink_switches: ['s01', 's02']
26 | uplink_ipv4_pool: 100.65.0.0/24
27 | mlag_interfaces: ['Ethernet3', 'Ethernet4']
28 | mlag_peer_ipv4_pool: 100.65.1.0/24
29 | mlag_peer_l3_ipv4_pool: 100.65.2.0/24
30 | virtual_router_mac_address: 00:1c:73:00:dc:01
31 | spanning_tree_mode: mstp
32 | spanning_tree_priority: 16384
33 | node_groups:
34 | - group: pod0
35 | bgp_as: 65101
36 | nodes:
37 | - name: l01
38 | id: 1
39 | mgmt_ip: 10.0.2.1/16
40 | uplink_switch_interfaces: ['Ethernet1', 'Ethernet1']
41 | filter:
42 | tags: [l01]
43 | - name: l02
44 | id: 2
45 | mgmt_ip: 10.0.2.2/16
46 | uplink_switch_interfaces: ['Ethernet2', 'Ethernet2']
47 | filter:
48 | tags: [l02]
49 |
50 | p2p_uplinks_mtu: 9214
51 |
--------------------------------------------------------------------------------
/docs/assets/stylesheets/extra.css:
--------------------------------------------------------------------------------
1 | @keyframes heartbeat {
2 | 0%, 40%, 80%, 100% {
3 | transform: scale(1);
4 | }
5 | 20%, 60% {
6 | transform: scale(1.15);
7 | }
8 | }
9 | .heartbeat {
10 | animation: heartbeat 1000ms infinite;
11 | }
12 | .opacity05 {
13 | opacity: 0.5;
14 | }
15 | .opacity06 {
16 | opacity: 0.6;
17 | }
18 | .opacity07 {
19 | opacity: 0.7;
20 | }
21 | .opacity08 {
22 | opacity: 0.8;
23 | }
24 | .opacity09 {
25 | opacity: 0.9;
26 | }
27 | .contrast90 {
28 | filter: contrast(90%);
29 | }
30 | .md-header {
31 | background: linear-gradient(to right, #16222A, #3A6073);
32 | }
33 | .md-tabs {
34 | background: linear-gradient(to right, #16222A, #3A6073);
35 | }
36 | .md-footer {
37 | background: linear-gradient(to right, #16222A, #3A6073);
38 | }
39 | a.md-button.md-button--primary {
40 | background-color: #3A6073;
41 | }
42 | [data-md-color-scheme="slate"] {
43 | --md-footer-bg-color: linear-gradient(to right, #16222A, #3A6073);
44 | --md-footer-bg-color--dark: linear-gradient(to right, #16222A, #3A6073);
45 | --md-primary-fg-color--dark: #233743;
46 | --md-primary-fg-color--light: #233743;
47 | --md-primary-fg-color: #233743;
48 | }
49 | [data-md-color-scheme="default"] {
50 | --md-footer-bg-color: linear-gradient(to right, #16222A, #3A6073);
51 | --md-footer-bg-color--dark: linear-gradient(to right, #16222A, #3A6073);
52 | --md-primary-fg-color--dark: #233743;
53 | --md-primary-fg-color--light: #233743;
54 | --md-primary-fg-color: #5487b8;
55 | }
--------------------------------------------------------------------------------
/containers/playground-small-evpn-mlag/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "dockerfile": "Dockerfile",
4 | "args": {
5 | "FROM_IMAGE": "${localEnv:FROM_IMAGE}",
6 | "FROM_VARIANT": "${localEnv:FROM_VARIANT}",
7 | "USERNAME": "${localEnv:USERNAME}",
8 | "CLAB_VERSION": "${localEnv:CLAB_VERSION}",
9 | "CEOS_LAB_VERSION_ARG": "${localEnv:CEOS_LAB_VERSION_ARG}",
10 | "GIT_INIT_ARG": "${localEnv:GIT_INIT_ARG}"
11 | }
12 | },
13 | "customizations": {
14 | "vscode": {
15 | "extensions": [
16 | // git essentials
17 | "piotrpalarz.vscode-gitignore-generator",
18 | "mhutchie.git-graph",
19 | "donjayamanne.githistory",
20 | // spell checker
21 | "streetsidesoftware.code-spell-checker",
22 | // drawio and tldraw
23 | // excalidraw is pre-installed in universal
24 | "hediet.vscode-drawio",
25 | "tldraw-org.tldraw-vscode",
26 | // markdown
27 | "yzhang.markdown-all-in-one",
28 | "bierner.markdown-checkbox",
29 | "DavidAnson.vscode-markdownlint",
30 | // various tools
31 | "tuxtina.json2yaml",
32 | "mutantdino.resourcemonitor",
33 | //REST Client
34 | "humao.rest-client"
35 | ]
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/.devcontainer/cvaas-cvaas-and-avd-demo--evpn-aa/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/cvaas:cvaas-and-avd-demo--evpn-aa",
3 | // containerEnv set the variables applied to entire container
4 | "containerEnv": {
5 | "ARISTA_TOKEN": "${localEnv:ARTOKEN}",
6 | "CV_API_TOKEN": "${localEnv:CV_API_TOKEN}",
7 | "CONTAINERWSF": "${containerWorkspaceFolder}",
8 | "GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}"
9 | },
10 | "secrets": {
11 | "CV_API_TOKEN": {
12 | "description": "(Optional) CVaaS service account token. Required only if CVaaS will be part of the demo."
13 | // "documentationUrl": "https://example.com/link/to/info"
14 | },
15 | "ARTOKEN": {
16 | "description": "token to auto-download EOS images from arista.com."
17 | // "documentationUrl": "https://example.com/link/to/info"
18 | },
19 | "CVURL": {
20 | "description": "(Optional) URL to be used to access CVaaS. Default is `cv-staging.corp.arista.io`"
21 | // "documentationUrl": "https://example.com/link/to/info"
22 | }
23 | },
24 | "hostRequirements": {
25 | "cpus": 8,
26 | "memory": "32gb",
27 | "storage": "64gb"
28 | },
29 | "postCreateCommand": "postCreate.sh",
30 | "workspaceMount": "source=${localWorkspaceFolder}/demos/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
31 | "workspaceFolder": "/cvaas-cvaas-and-avd-demo--evpn-aa"
32 | }
--------------------------------------------------------------------------------
/.devcontainer/cvaas-cvaas-and-avd-demo--evpn-mlag/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/cvaas:cvaas-and-avd-demo--evpn-mlag",
3 | // containerEnv set the variables applied to entire container
4 | "containerEnv": {
5 | "ARISTA_TOKEN": "${localEnv:ARTOKEN}",
6 | "CV_API_TOKEN": "${localEnv:CV_API_TOKEN}",
7 | "CONTAINERWSF": "${containerWorkspaceFolder}",
8 | "GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}"
9 | },
10 | "secrets": {
11 | "CV_API_TOKEN": {
12 | "description": "(Optional) CVaaS service account token. Required only if CVaaS will be part of the demo."
13 | // "documentationUrl": "https://example.com/link/to/info"
14 | },
15 | "ARTOKEN": {
16 | "description": "token to auto-download EOS images from arista.com."
17 | // "documentationUrl": "https://example.com/link/to/info"
18 | },
19 | "CVURL": {
20 | "description": "(Optional) URL to be used to access CVaaS. Default is `cv-staging.corp.arista.io`"
21 | // "documentationUrl": "https://example.com/link/to/info"
22 | }
23 | },
24 | "hostRequirements": {
25 | "cpus": 8,
26 | "memory": "32gb",
27 | "storage": "64gb"
28 | },
29 | "postCreateCommand": "postCreate.sh",
30 | "workspaceMount": "source=${localWorkspaceFolder}/demos/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
31 | "workspaceFolder": "/cvaas-cvaas-and-avd-demo--evpn-mlag"
32 | }
--------------------------------------------------------------------------------
/containers/avd_extended_workshop/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "dockerfile": "Dockerfile",
4 | "args": {
5 | "FROM_IMAGE": "${localEnv:FROM_IMAGE}",
6 | "FROM_VARIANT": "${localEnv:FROM_VARIANT}",
7 | "USERNAME": "${localEnv:USERNAME}",
8 | "CLAB_VERSION": "${localEnv:CLAB_VERSION}",
9 | "_YQ_VERSION": "v4.34.1",
10 | "_YQ_BINARY": "yq_linux_amd64",
11 | "CEOS_LAB_VERSION_ARG": "${localEnv:CEOS_LAB_VERSION_ARG}",
12 | "GIT_INIT_ARG": "${localEnv:GIT_INIT_ARG}"
13 | }
14 | },
15 | "customizations": {
16 | "vscode": {
17 | "extensions": [
18 | // git essentials
19 | "piotrpalarz.vscode-gitignore-generator",
20 | "mhutchie.git-graph",
21 | "donjayamanne.githistory",
22 | // spell checker
23 | "streetsidesoftware.code-spell-checker",
24 | // drawio and tldraw
25 | // excalidraw is pre-installed in universal
26 | "hediet.vscode-drawio",
27 | "tldraw-org.tldraw-vscode",
28 | // markdown
29 | "yzhang.markdown-all-in-one",
30 | "bierner.markdown-checkbox",
31 | "DavidAnson.vscode-markdownlint",
32 | // various tools
33 | "tuxtina.json2yaml",
34 | "mutantdino.resourcemonitor"
35 | ]
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/Makefile:
--------------------------------------------------------------------------------
1 | CURRENT_DIR := $(shell pwd)
2 |
3 | .PHONY: help
4 | help: ## Display help message
5 | @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}'
6 |
7 | .PHONY: start
8 | start: ## Deploy ceos lab
9 | sudo containerlab deploy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --max-workers 10 --timeout 5m --reconfigure
10 |
11 | .PHONY: stop
12 | stop: ## Destroy ceos lab
13 | sudo containerlab destroy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --cleanup
14 |
15 | .PHONY: build
16 | build: ## Generate AVD configs
17 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_build.yml
18 |
19 | .PHONY: deploy_eapi
20 | deploy_eapi: ## Deploy AVD configs using eAPI
21 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_deploy.yml
22 |
23 | .PHONY: deploy_cvp
24 | deploy_cvp: ## Deploy AVD configs using eAPI
25 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_deploy_cvp.yml
26 |
27 | .PHONY: diff
28 | diff: ## Show the diff between running config and designed config
29 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook --diff --check playbooks/avd_deploy.yml
30 |
31 | .PHONY: test
32 | test: ## validate the network state
33 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_validate.yml
34 |
35 | .PHONY: tags
36 | tags: ## add tags for topology view
37 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_create_tags.yml
38 |
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/demos/{{cookiecutter.__demo_slug}}/clab/init-configs/{% for hostname in cookiecutter.__lab.lab_inventory %}.cfg.jinja:
--------------------------------------------------------------------------------
1 | hostname {{ cookiecutter.__lab.lab_inventory[cookiecutter_file_index].hostname }}
2 | {%- if cookiecutter.cv_api_token_required %}
3 | !
4 | daemon TerminAttr
5 | exec /usr/bin/TerminAttr -cvaddr=apiserver.cv-staging.corp.arista.io:443 -cvauth=token-secure,/mnt/flash/cv-onboarding-token -cvvrf=MGMT -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent -taillogs
6 | no shutdown
7 | {%- endif %}
8 | !
9 | no aaa root
10 | !
11 | username {{ cookiecutter.clab_user }} privilege 15 role network-admin secret {{ cookiecutter.clab_password }}
12 | !
13 | vrf instance MGMT
14 | !
15 | ip name-server vrf MGMT 8.8.8.8
16 | dns domain avd.lab
17 | !
18 | ntp local-interface vrf MGMT Management0
19 | ntp server vrf MGMT time.apple.com
20 | ntp server vrf MGMT time.google.com
21 | ntp server vrf MGMT time.windows.com
22 | !
23 | service routing protocols model multi-agent
24 | !
25 | management api http-commands
26 | protocol https
27 | no shutdown
28 | !
29 | vrf MGMT
30 | no shutdown
31 | !
32 | aaa authorization exec default local
33 | !
34 | interface Management0
35 | vrf MGMT
36 | ip address {{ cookiecutter.__lab.lab_inventory[cookiecutter_file_index].mgmt_ip }}/{{ cookiecutter.clab_mgmt_mask }}
37 | !
38 | ip route vrf MGMT 0.0.0.0/0 {{ cookiecutter.clab_mgmt_gw }}
39 | !
40 | ip name-server vrf MGMT 8.8.8.8
41 | !
42 | end
--------------------------------------------------------------------------------
/.devcontainer/cvaas-cvaas-and-avd-demo--evpn-aa-small/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/cvaas:cvaas-and-avd-demo--evpn-aa",
3 | // containerEnv set the variables applied to entire container
4 | "containerEnv": {
5 | "ARISTA_TOKEN": "${localEnv:ARTOKEN}",
6 | "CV_API_TOKEN": "${localEnv:CV_API_TOKEN}",
7 | "CONTAINERWSF": "${containerWorkspaceFolder}",
8 | "GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}"
9 | },
10 | "secrets": {
11 | "CV_API_TOKEN": {
12 | "description": "(Optional) CVaaS service account token. Required only if CVaaS will be part of the demo."
13 | // "documentationUrl": "https://example.com/link/to/info"
14 | },
15 | "ARTOKEN": {
16 | "description": "token to auto-download EOS images from arista.com."
17 | // "documentationUrl": "https://example.com/link/to/info"
18 | },
19 | "CVURL": {
20 | "description": "(Optional) URL to be used to access CVaaS. Default is `cv-staging.corp.arista.io`"
21 | // "documentationUrl": "https://example.com/link/to/info"
22 | }
23 | },
24 | "hostRequirements": {
25 | "cpus": 4,
26 | "memory": "16gb",
27 | "storage": "32gb"
28 | },
29 | "postCreateCommand": "postCreate.sh",
30 | "workspaceMount": "source=${localWorkspaceFolder}/demos/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
31 | "workspaceFolder": "/cvaas-cvaas-and-avd-demo--evpn-aa-small"
32 | }
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/Makefile:
--------------------------------------------------------------------------------
1 | CURRENT_DIR := $(shell pwd)
2 |
3 | .PHONY: help
4 | help: ## Display help message
5 | @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}'
6 |
7 | .PHONY: start
8 | start: ## Deploy ceos lab
9 | sudo containerlab deploy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --max-workers 10 --timeout 5m --reconfigure
10 |
11 | .PHONY: stop
12 | stop: ## Destroy ceos lab
13 | sudo containerlab destroy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --cleanup
14 |
15 | .PHONY: build
16 | build: ## Generate AVD configs
17 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_build.yml
18 |
19 | .PHONY: deploy_eapi
20 | deploy_eapi: ## Deploy AVD configs using eAPI
21 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_deploy.yml
22 |
23 | .PHONY: deploy_cvp
24 | deploy_cvp: ## Deploy AVD configs using eAPI
25 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_deploy_cvp.yml
26 |
27 | .PHONY: diff
28 | diff: ## Show the diff between running config and designed config
29 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook --diff --check playbooks/avd_deploy.yml
30 |
31 | .PHONY: test
32 | test: ## validate the network state
33 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_validate.yml
34 |
35 | .PHONY: tags
36 | tags: ## add tags for topology view
37 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_create_tags.yml
38 |
--------------------------------------------------------------------------------
/.devcontainer/cvaas-cvaas-and-avd-demo--evpn-mlag-small/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/cvaas:cvaas-and-avd-demo--evpn-mlag",
3 | // containerEnv set the variables applied to entire container
4 | "containerEnv": {
5 | "ARISTA_TOKEN": "${localEnv:ARTOKEN}",
6 | "CV_API_TOKEN": "${localEnv:CV_API_TOKEN}",
7 | "CONTAINERWSF": "${containerWorkspaceFolder}",
8 | "GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}"
9 | },
10 | "secrets": {
11 | "CV_API_TOKEN": {
12 | "description": "(Optional) CVaaS service account token. Required only if CVaaS will be part of the demo."
13 | // "documentationUrl": "https://example.com/link/to/info"
14 | },
15 | "ARTOKEN": {
16 | "description": "token to auto-download EOS images from arista.com."
17 | // "documentationUrl": "https://example.com/link/to/info"
18 | },
19 | "CVURL": {
20 | "description": "(Optional) URL to be used to access CVaaS. Default is `cv-staging.corp.arista.io`"
21 | // "documentationUrl": "https://example.com/link/to/info"
22 | }
23 | },
24 | "hostRequirements": {
25 | "cpus": 4,
26 | "memory": "16gb",
27 | "storage": "32gb"
28 | },
29 | "postCreateCommand": "postCreate.sh",
30 | "workspaceMount": "source=${localWorkspaceFolder}/demos/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
31 | "workspaceFolder": "/cvaas-cvaas-and-avd-demo--evpn-mlag-small"
32 | }
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/Makefile:
--------------------------------------------------------------------------------
1 | CURRENT_DIR := $(shell pwd)
2 |
3 | .PHONY: help
4 | help: ## Display help message
5 | @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}'
6 |
7 | .PHONY: start
8 | start: ## Deploy ceos lab
9 | sudo containerlab deploy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --max-workers 10 --timeout 5m --reconfigure
10 |
11 | .PHONY: stop
12 | stop: ## Destroy ceos lab
13 | sudo containerlab destroy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --cleanup
14 |
15 | .PHONY: build
16 | build: ## Generate AVD configs
17 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_build.yml
18 |
19 | .PHONY: deploy_eapi
20 | deploy_eapi: ## Deploy AVD configs using eAPI
21 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_deploy.yml
22 |
23 | .PHONY: deploy_cvp
24 | deploy_cvp: ## Deploy AVD configs using eAPI
25 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_deploy_cvp.yml
26 |
27 | .PHONY: diff
28 | diff: ## Show the diff between running config and designed config
29 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook --diff --check playbooks/avd_deploy.yml
30 |
31 | .PHONY: test
32 | test: ## validate the network state
33 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_validate.yml
34 |
35 | .PHONY: tags
36 | tags: ## add tags for topology view
37 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_create_tags.yml
38 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/Makefile:
--------------------------------------------------------------------------------
1 | CURRENT_DIR := $(shell pwd)
2 |
3 | .PHONY: help
4 | help: ## Display help message
5 | @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}'
6 |
7 | .PHONY: start
8 | start: ## Deploy ceos lab
9 | sudo containerlab deploy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --max-workers 10 --timeout 5m --reconfigure
10 |
11 | .PHONY: stop
12 | stop: ## Destroy ceos lab
13 | sudo containerlab destroy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --cleanup
14 |
15 | .PHONY: build
16 | build: ## Generate AVD configs
17 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_build.yml
18 |
19 | .PHONY: deploy_eapi
20 | deploy_eapi: ## Deploy AVD configs using eAPI
21 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_deploy.yml
22 |
23 | .PHONY: deploy_cvp
24 | deploy_cvp: ## Deploy AVD configs using eAPI
25 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_deploy_cvp.yml
26 |
27 | .PHONY: diff
28 | diff: ## Show the diff between running config and designed config
29 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook --diff --check playbooks/avd_deploy.yml
30 |
31 | .PHONY: test
32 | test: ## validate the network state
33 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_validate.yml
34 |
35 | .PHONY: tags
36 | tags: ## add tags for topology view
37 | cd $(CURRENT_DIR)/avd_inventory; ansible-playbook playbooks/avd_create_tags.yml
38 |
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/demos/{{cookiecutter.__demo_slug}}/clab/topology.clab.yml.jinja:
--------------------------------------------------------------------------------
1 | ---
2 | name: {{ cookiecutter.demo_name }}
3 | prefix: ""
4 |
5 | mgmt:
6 | network: custom_mgmt
7 | ipv4-subnet: {{ cookiecutter.clab_mgmt_subnet }}/{{ cookiecutter.clab_mgmt_mask }}
8 |
9 | topology:
10 | kinds:
11 | ceos:
12 | enforce-startup-config: true
13 | image: arista/ceos:{{ cookiecutter.ceos_lab_version }}
14 | defaults:
15 | kind: ceos
16 | {%- if cookiecutter.cv_api_token_required %}
17 | extras:
18 | ceos-copy-to-flash:
19 | - clab/cv-onboarding-token
20 | # an alternative to ceos-copy-to-flash could be bind
21 | # keeping the bind settings here just in case
22 | # binds:
23 | # - cv-onboarding-token:/mnt/flash/cv-onboarding-token:ro
24 | {%- endif %}
25 | nodes:
26 | {%- for node in cookiecutter.__lab.lab_inventory %}
27 | {{ node.hostname }}:
28 | mgmt-ipv4: {{ node.mgmt_ip }}
29 | binds:
30 | - sn/{{ node.hostname }}.txt:/mnt/flash/ceos-config:ro
31 | startup-config: init-configs/{{ node.hostname }}.cfg
32 | {%- endfor %}
33 | {%- for node in cookiecutter.__lab.lab_host_inventory %}
34 | {{ node.hostname }}:
35 | mgmt-ipv4: {{ node.mgmt_ip }}
36 | startup-config: init-configs/{{ node.hostname }}.cfg
37 | {%- endfor %}
38 |
39 | links:
40 | {%- for link in cookiecutter.__lab.lab_cabling_plan %}
41 | - endpoints: ["{{ link.local_switch }}:{{ link.local_interface }}", "{{ link.remote_switch }}:{{ link.remote_interface }}"]
42 | {%- endfor %}
43 |
--------------------------------------------------------------------------------
/.github/workflows/playground-small-evpn-mlag.yml:
--------------------------------------------------------------------------------
1 | ---
2 | name: build container for Small EVPN MLAG
3 |
4 | on:
5 | push:
6 | branches: [ '**' ]
7 | paths:
8 | - .github/workflows/playground-small-evpn-mlag.yml
9 | - .github/workflows/container-build-child-workflow.yml
10 | - containers/playground-small-evpn-mlag/**
11 | workflow_dispatch:
12 | branches: [ '**' ]
13 |
14 | jobs:
15 | # build container for original repo on main branch only
16 | build-demo-container:
17 | if: (github.repository == 'arista-netdevops-community/one-click-se-demos') && github.ref == 'refs/heads/main'
18 | uses: ./.github/workflows/container-build-child-workflow.yml
19 | with:
20 | container_name: "playground"
21 | image_tags: "small-evpn-mlag"
22 | from_image: "ghcr.io/aristanetworks/avd/universal"
23 | from_variant: "python3.11-avd-v4.10.0"
24 | username: "avd"
25 | clab_version: "0.56.0"
26 | ceos_lab_version: "4.32.1F"
27 | git_init: False
28 | # build container on a forked repo on any branch
29 | build-on-fork:
30 | if: github.repository != 'arista-netdevops-community/one-click-se-demos'
31 | uses: ./.github/workflows/container-build-child-workflow.yml
32 | with:
33 | container_name: "playground"
34 | image_tags: "small-evpn-mlag"
35 | from_image: "ghcr.io/aristanetworks/avd/universal"
36 | from_variant: "python3.11-avd-v4.10.0"
37 | username: "avd"
38 | clab_version: "0.56.0"
39 | ceos_lab_version: "4.32.1F"
40 | git_init: False
41 |
--------------------------------------------------------------------------------
/demos/playground-small-evpn-mlag/clab/topology.clab.yml:
--------------------------------------------------------------------------------
1 | ---
2 | name: Small EVPN MLAG
3 | prefix: ""
4 |
5 | mgmt:
6 | network: custom_mgmt
7 | ipv4-subnet: 10.0.0.0/16
8 |
9 | topology:
10 | kinds:
11 | ceos:
12 | enforce-startup-config: true
13 | image: arista/ceos:4.32.1F
14 | defaults:
15 | kind: ceos
16 | nodes:
17 | s01:
18 | mgmt-ipv4: 10.0.1.1
19 | binds:
20 | - sn/s01.txt:/mnt/flash/ceos-config:ro
21 | startup-config: init-configs/s01.cfg
22 | ports:
23 | - 4011:443/tcp
24 | s02:
25 | mgmt-ipv4: 10.0.1.2
26 | binds:
27 | - sn/s02.txt:/mnt/flash/ceos-config:ro
28 | startup-config: init-configs/s02.cfg
29 | ports:
30 | - 4012:443/tcp
31 | l01:
32 | mgmt-ipv4: 10.0.2.1
33 | binds:
34 | - sn/l01.txt:/mnt/flash/ceos-config:ro
35 | startup-config: init-configs/l01.cfg
36 | ports:
37 | - 4021:443/tcp
38 | l02:
39 | mgmt-ipv4: 10.0.2.2
40 | binds:
41 | - sn/l02.txt:/mnt/flash/ceos-config:ro
42 | startup-config: init-configs/l02.cfg
43 | ports:
44 | - 4022:443/tcp
45 | h01:
46 | mgmt-ipv4: 10.0.3.1
47 | startup-config: init-configs/h01.cfg
48 |
49 | links:
50 | - endpoints: ["l01:eth1", "s01:eth1"]
51 | - endpoints: ["l01:eth2", "s02:eth1"]
52 | - endpoints: ["l02:eth1", "s01:eth2"]
53 | - endpoints: ["l02:eth2", "s02:eth2"]
54 | - endpoints: ["l01:eth3", "l02:eth3"]
55 | - endpoints: ["l01:eth4", "l02:eth4"]
56 | - endpoints: ["h01:eth1", "l01:eth10"]
57 | - endpoints: ["h01:eth2", "l02:eth10"]
58 |
--------------------------------------------------------------------------------
/.devcontainer/avd-single-dc-l3ls/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "image": "ghcr.io/${localEnv:GITHUB_REPOSITORY}/avd:single-dc-l3ls",
3 | // containerEnv set the variables applied to entire container
4 | "containerEnv": {
5 | "ARISTA_TOKEN": "${localEnv:ARTOKEN}",
6 | "CONTAINERWSF": "${containerWorkspaceFolder}",
7 | "GITHUB_REPOSITORY": "${localEnv:GITHUB_REPOSITORY}",
8 | "AVD_GITHUB_REPO": "${localEnv:AVD_GITHUB_REPO}",
9 | "AVD_BRANCH_NAME": "${localEnv:AVD_BRANCH_NAME}"
10 | },
11 | "secrets": {
12 | "ARTOKEN": {
13 | "description": "token to auto-download EOS images from arista.com."
14 | // "documentationUrl": "https://example.com/link/to/info"
15 | },
16 | "AVD_GITHUB_REPO": {
17 | "description": "The name of the repository that will be used to install AVD collection. Set `aristanetworks/avd` to install from the original repository or use a fork."
18 | // "documentationUrl": "https://example.com/link/to/info"
19 | },
20 | "AVD_BRANCH_NAME": {
21 | "description": "The name of the branch that will be used to install AVD collection. For example: `devel`"
22 | // "documentationUrl": "https://example.com/link/to/info"
23 | }
24 | },
25 | "hostRequirements": {
26 | "cpus": 8,
27 | "memory": "32gb",
28 | "storage": "64gb"
29 | },
30 | "postCreateCommand": "/bin/entrypoint.sh true; postCreate.sh",
31 | "workspaceMount": "source=${localWorkspaceFolder}/demos/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
32 | "workspaceFolder": "/avd-single-dc-l3ls"
33 | }
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa-small/clab/topology.clab.yml:
--------------------------------------------------------------------------------
1 | name: CVaaS and AVD Demo, EVPN AA
2 | prefix: ""
3 |
4 | mgmt:
5 | network: custom_mgmt
6 | ipv4-subnet: 10.0.0.0/16
7 |
8 | topology:
9 | kinds:
10 | ceos:
11 | enforce-startup-config: true
12 | image: arista/ceos:4.32.1F
13 | defaults:
14 | kind: ceos
15 | extras:
16 | ceos-copy-to-flash:
17 | - clab/cv-onboarding-token
18 | # an alternative to ceos-copy-to-flash could be bind
19 | # keeping the bind settings here just in case
20 | # binds:
21 | # - cv-onboarding-token:/mnt/flash/cv-onboarding-token:ro
22 | nodes:
23 | s01:
24 | mgmt-ipv4: 10.0.1.1
25 | binds:
26 | - sn/s01.txt:/mnt/flash/ceos-config:ro
27 | startup-config: init-configs/s01.cfg
28 | s02:
29 | mgmt-ipv4: 10.0.1.2
30 | binds:
31 | - sn/s02.txt:/mnt/flash/ceos-config:ro
32 | startup-config: init-configs/s02.cfg
33 | l01:
34 | mgmt-ipv4: 10.0.2.1
35 | binds:
36 | - sn/l01.txt:/mnt/flash/ceos-config:ro
37 | startup-config: init-configs/l01.cfg
38 | l02:
39 | mgmt-ipv4: 10.0.2.2
40 | binds:
41 | - sn/l02.txt:/mnt/flash/ceos-config:ro
42 | startup-config: init-configs/l02.cfg
43 | h01:
44 | mgmt-ipv4: 10.0.3.1
45 | startup-config: init-configs/h01.cfg
46 |
47 | links:
48 | - endpoints: ["l01:eth1", "s01:eth1"]
49 | - endpoints: ["l01:eth2", "s02:eth1"]
50 | - endpoints: ["l02:eth1", "s01:eth2"]
51 | - endpoints: ["l02:eth2", "s02:eth2"]
52 | - endpoints: ["h01:eth1", "l01:eth10"]
53 | - endpoints: ["h01:eth2", "l02:eth10"]
54 |
--------------------------------------------------------------------------------
/.cc/{{cookiecutter.__demo_slug}}/slides/{{cookiecutter.__demo_slug}}.md.jinja:
--------------------------------------------------------------------------------
1 | ---
2 | marp: true
3 | theme: default
4 | class: invert
5 | author: {{ cookiecutter.demo_author }}
6 | # size 16:9 1280px 720px
7 | size: 16:9
8 | paginate: true
9 | math: mathjax
10 | style: |
11 | :root {
12 | background: linear-gradient(to bottom, #000000, #434343);
13 | }
14 | img[alt~="custom"] {
15 | float: right;
16 | }
17 | .columns {
18 | display: grid;
19 | grid-template-columns: repeat(2, minmax(0, 1fr));
20 | gap: 1rem;
21 | }
22 | footer {
23 | font-size: 14px;
24 | }
25 | section::after {
26 | font-size: 14px;
27 | }
28 | img {
29 | background-color: transparent;
30 | }
31 | pre {
32 | background: linear-gradient(to top, #000000, #434343);
33 | background-color: transparent;
34 | }
35 | ---
36 |
37 | # {{ cookiecutter.demo_name }}
38 |
39 |
40 |
43 |
44 | ```text
45 | {{ cookiecutter.demo_name }} Demo
46 | {{ cookiecutter.demo_author }}
47 | {% now 'local', '%d/%m/%Y' %}
48 | ```
49 |
50 | 
51 |
52 | ---
53 |
54 | # Agenda
55 |
56 |
57 |
58 | 
59 |
60 | - item1
61 | - item2
62 | - item3
63 |
64 | ---
65 |
66 |
67 |
68 | 
69 |
70 | # Q&A
71 |
72 | - [Ansible AVD](https://avd.arista.com/)
73 | - [This repository](https://github.com/{% raw %}'{{gh.repository}}'{%endraw%})
74 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag-small/clab/topology.clab.yml:
--------------------------------------------------------------------------------
1 | name: CVaaS and AVD Demo, EVPN MLAG
2 | prefix: ""
3 |
4 | mgmt:
5 | network: custom_mgmt
6 | ipv4-subnet: 10.0.0.0/16
7 |
8 | topology:
9 | kinds:
10 | ceos:
11 | enforce-startup-config: true
12 | image: arista/ceos:4.32.1F
13 | defaults:
14 | kind: ceos
15 | extras:
16 | ceos-copy-to-flash:
17 | - clab/cv-onboarding-token
18 | # an alternative to ceos-copy-to-flash could be bind
19 | # keeping the bind settings here just in case
20 | # binds:
21 | # - cv-onboarding-token:/mnt/flash/cv-onboarding-token:ro
22 | nodes:
23 | s01:
24 | mgmt-ipv4: 10.0.1.1
25 | binds:
26 | - sn/s01.txt:/mnt/flash/ceos-config:ro
27 | startup-config: init-configs/s01.cfg
28 | s02:
29 | mgmt-ipv4: 10.0.1.2
30 | binds:
31 | - sn/s02.txt:/mnt/flash/ceos-config:ro
32 | startup-config: init-configs/s02.cfg
33 | l01:
34 | mgmt-ipv4: 10.0.2.1
35 | binds:
36 | - sn/l01.txt:/mnt/flash/ceos-config:ro
37 | startup-config: init-configs/l01.cfg
38 | l02:
39 | mgmt-ipv4: 10.0.2.2
40 | binds:
41 | - sn/l02.txt:/mnt/flash/ceos-config:ro
42 | startup-config: init-configs/l02.cfg
43 | h01:
44 | mgmt-ipv4: 10.0.3.1
45 | startup-config: init-configs/h01.cfg
46 |
47 | links:
48 | - endpoints: ["l01:eth1", "s01:eth1"]
49 | - endpoints: ["l01:eth2", "s02:eth1"]
50 | - endpoints: ["l02:eth1", "s01:eth2"]
51 | - endpoints: ["l02:eth2", "s02:eth2"]
52 | - endpoints: ["l01:eth3", "l02:eth3"]
53 | - endpoints: ["l01:eth4", "l02:eth4"]
54 | - endpoints: ["h01:eth1", "l01:eth10"]
55 | - endpoints: ["h01:eth2", "l02:eth10"]
56 |
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/clab/init-configs/h01.cfg:
--------------------------------------------------------------------------------
1 | !
2 | no aaa root
3 | !
4 | username admin privilege 15 role network-admin secret admin
5 | !
6 | alias test
7 | 10 echo "#####################################################"
8 | 11 echo "# testing default GW connectivity"
9 | 12 echo "#####################################################"
10 | 13 echo ""
11 | 14 ping 10.100.100.1
12 | 15 echo ""
13 | 20 echo "#####################################################"
14 | 21 echo "# try ping to VLAN100"
15 | 22 echo "#####################################################"
16 | 23 echo ""
17 | 24 ping 10.100.100.101
18 | !
19 | service routing protocols model multi-agent
20 | !
21 | hostname h01
22 | ip name-server vrf MGMT 8.8.8.8
23 | dns domain avd.lab
24 | !
25 | platform tfa
26 | personality arfa
27 | !
28 | vlan 100
29 | !
30 | vrf instance MGMT
31 | !
32 | management api http-commands
33 | protocol https
34 | no shutdown
35 | !
36 | vrf MGMT
37 | no shutdown
38 | !
39 | aaa authorization exec default local
40 | !
41 | interface Port-Channel1
42 | switchport trunk allowed vlan 100
43 | switchport mode trunk
44 | !
45 | interface Ethernet1
46 | channel-group 1 mode active
47 | !
48 | interface Ethernet2
49 | channel-group 1 mode active
50 | !
51 | interface Management1
52 | vrf MGMT
53 | ip address 10.0.3.1/16
54 | !
55 | interface Vlan100
56 | ip address 10.100.100.101/24
57 | !
58 | ip routing
59 | no ip routing vrf MGMT
60 | !
61 | ip route 0.0.0.0/0 10.100.100.1
62 | ip route vrf MGMT 0.0.0.0/0 10.0.0.1
63 | !
64 | ntp local-interface vrf MGMT Management1
65 | ntp server vrf MGMT time.apple.com
66 | ntp server vrf MGMT time.google.com
67 | ntp server vrf MGMT time.windows.com
68 | !
69 | end
--------------------------------------------------------------------------------
/demos/clab-build-containerlab-with-ceos/clab/topology.clab.yml:
--------------------------------------------------------------------------------
1 | name: build-clab-with-ceos
2 | prefix: ""
3 |
4 | mgmt:
5 | network: custom_mgmt
6 | ipv4-subnet: 10.0.0.0/16
7 |
8 | topology:
9 | kinds:
10 | ceos:
11 | enforce-startup-config: true
12 | image: arista/ceos:4.30.6M
13 | defaults:
14 | kind: ceos
15 | nodes:
16 | s01:
17 | mgmt-ipv4: 10.0.1.1
18 | binds:
19 | - sn/s01.txt:/mnt/flash/ceos-config:ro
20 | - interface_mapping.json:/mnt/flash/EosIntfMapping.json:ro
21 | startup-config: init-configs/s01.cfg
22 | s02:
23 | mgmt-ipv4: 10.0.1.2
24 | binds:
25 | - sn/s02.txt:/mnt/flash/ceos-config:ro
26 | - interface_mapping.json:/mnt/flash/EosIntfMapping.json:ro
27 | startup-config: init-configs/s02.cfg
28 | l01:
29 | mgmt-ipv4: 10.0.2.1
30 | binds:
31 | - sn/l01.txt:/mnt/flash/ceos-config:ro
32 | - interface_mapping.json:/mnt/flash/EosIntfMapping.json:ro
33 | startup-config: init-configs/l01.cfg
34 | l02:
35 | mgmt-ipv4: 10.0.2.2
36 | binds:
37 | - sn/l02.txt:/mnt/flash/ceos-config:ro
38 | - interface_mapping.json:/mnt/flash/EosIntfMapping.json:ro
39 | startup-config: init-configs/l02.cfg
40 | h01:
41 | mgmt-ipv4: 10.0.3.1
42 | startup-config: init-configs/h01.cfg
43 |
44 | links:
45 | - endpoints: ["l01:eth1_1", "s01:eth1_1"]
46 | - endpoints: ["l01:eth2_1", "s02:eth1_1"]
47 | - endpoints: ["l02:eth1_1", "s01:eth2_1"]
48 | - endpoints: ["l02:eth2_1", "s02:eth2_1"]
49 | - endpoints: ["l01:eth3_1", "l02:eth3_1"]
50 | - endpoints: ["l01:eth4_1", "l02:eth4_1"]
51 | - endpoints: ["h01:eth1", "l01:eth10_1"]
52 | - endpoints: ["h01:eth2", "l02:eth10_1"]
53 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-aa/avd_inventory/group_vars/all.yml:
--------------------------------------------------------------------------------
1 | ---
2 | mgmt_gateway: 10.0.0.1
3 | mgmt_interface: Management0
4 |
5 | ## disabled due to a bug
6 | ## try if you need a challenge =)
7 | # eos_cli: |
8 | # interface Management0
9 | # no lldp receive
10 | # no lldp transmit
11 |
12 | name_servers:
13 | - 8.8.8.8
14 |
15 | # NTP servers
16 | ntp:
17 | local_interface:
18 | name: Management0
19 | vrf: MGMT
20 | servers:
21 | - name: time.google.com
22 | vrf: MGMT
23 | - name: time.windows.com
24 | vrf: MGMT
25 | - name: time.apple.com
26 | vrf: MGMT
27 |
28 | dns_domain: avd.lab
29 |
30 | # Local Users
31 | local_users:
32 | - name: arista
33 | privilege: 15
34 | role: network-admin
35 | sha512_password: "{{ ansible_password | password_hash(rounds=5000, salt=1) }}"
36 |
37 | # AAA Authorization Settings
38 | aaa_authorization:
39 | exec:
40 | default: local
41 |
42 | ansible_user: arista
43 | ansible_password: arista
44 | ansible_network_os: arista.eos.eos
45 | # Configure privilege escalation
46 | ansible_become: true
47 | ansible_become_method: enable
48 | # HTTPAPI configuration
49 | ansible_connection: httpapi
50 | ansible_httpapi_port: 443
51 | ansible_httpapi_use_ssl: true
52 | ansible_httpapi_validate_certs: false
53 | ansible_python_interpreter: $(which python3)
54 | avd_data_conversion_mode: error
55 | avd_data_validation_mode: error
56 |
57 | daemon_terminattr:
58 | cvaddrs:
59 | - "apiserver.cv-staging.corp.arista.io:443"
60 | cvauth:
61 | method: token-secure
62 | token_file: "/mnt/flash/cv-onboarding-token"
63 | cvvrf: MGMT
64 | smashexcludes: "ale,flexCounter,hardware,kni,pulse,strata"
65 | ingestexclude: "/Sysdb/cell/1/agent,/Sysdb/cell/2/agent"
66 | disable_aaa: True
67 |
--------------------------------------------------------------------------------
/demos/cvaas-cvaas-and-avd-demo--evpn-mlag/avd_inventory/group_vars/all.yml:
--------------------------------------------------------------------------------
1 | ---
2 | mgmt_gateway: 10.0.0.1
3 | mgmt_interface: Management0
4 |
5 | ## disabled due to a bug
6 | ## try if you need a challenge =)
7 | # eos_cli: |
8 | # interface Management0
9 | # no lldp receive
10 | # no lldp transmit
11 |
12 | name_servers:
13 | - 8.8.8.8
14 |
15 | # NTP servers
16 | ntp:
17 | local_interface:
18 | name: Management0
19 | vrf: MGMT
20 | servers:
21 | - name: time.google.com
22 | vrf: MGMT
23 | - name: time.windows.com
24 | vrf: MGMT
25 | - name: time.apple.com
26 | vrf: MGMT
27 |
28 | dns_domain: avd.lab
29 |
30 | # Local Users
31 | local_users:
32 | - name: arista
33 | privilege: 15
34 | role: network-admin
35 | sha512_password: "{{ ansible_password | password_hash(rounds=5000, salt=1) }}"
36 |
37 | # AAA Authorization Settings
38 | aaa_authorization:
39 | exec:
40 | default: local
41 |
42 | ansible_user: arista
43 | ansible_password: arista
44 | ansible_network_os: arista.eos.eos
45 | # Configure privilege escalation
46 | ansible_become: true
47 | ansible_become_method: enable
48 | # HTTPAPI configuration
49 | ansible_connection: httpapi
50 | ansible_httpapi_port: 443
51 | ansible_httpapi_use_ssl: true
52 | ansible_httpapi_validate_certs: false
53 | ansible_python_interpreter: $(which python3)
54 | avd_data_conversion_mode: error
55 | avd_data_validation_mode: error
56 |
57 | daemon_terminattr:
58 | cvaddrs:
59 | - "apiserver.cv-staging.corp.arista.io:443"
60 | cvauth:
61 | method: token-secure
62 | token_file: "/mnt/flash/cv-onboarding-token"
63 | cvvrf: MGMT
64 | smashexcludes: "ale,flexCounter,hardware,kni,pulse,strata"
65 | ingestexclude: "/Sysdb/cell/1/agent,/Sysdb/cell/2/agent"
66 | disable_aaa: True
67 |
--------------------------------------------------------------------------------