├── .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 | ![stay back](assets/img/pexels-danne-555709.jpg) 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 | ![bg right](img/leonardo-yip-unsplash.jpg) 51 | 52 | --- 53 | 54 | # Agenda 55 | 56 | 57 | 58 | ![bg right opacity:75%](img/pexels-suzy-hazelwood-1226398.jpg) 59 | 60 | - item1 61 | - item2 62 | - item3 63 | 64 | --- 65 | 66 | 67 | 68 | ![bg left opacity:75%](img/pexels-ann-h-7186206.jpg) 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 | --------------------------------------------------------------------------------