The main goal of this project is the automation of Campus EVPN Deployment based on Catalyst 9000.
Custom Jinja templates and Python modules are used to build an initial config and modify the network configuration.
Project has a modular structure which gives an ability to introduce new features/services gradually step-by-step.
-
DAG (Distributed Anycast Gateway)
-
L2 Overlay (L2VNI)
-
L3 Overlay (L3VNI)
To run Cisco cat9k EVPN ansible playbook, you will require:
Hardware:
- A linux server (Fedroa, Ubuntu, RedHat, etc)
- Cat9k Switches supporting EVPN (from x release)
Network-Expertise:
- Basic network knowledge (network design, bring up of cat9k switches)
- Basic understanding of YAML
- Basic understanding of Python
- Basic linux command line use
It is recommended to run the project in the virtual environment.
Below you can find installation steps for Linux (ubuntu) server
- Install python3
sudo apt install python3
- Create the python virtual environment. In this example the virtual environment will be created in the folder
virtual-env/ansible
python3 -m venv virtual-env/ansible
More details could be found here
- Activate virtual environment.
source virtual-env/ansible/bin/activate
- Clone the repository
git clone https://github.com/Cat9kEVPN/cat9k-evpn-ansible.git
- Go to project directory
cd cat9k-evpn-ansible/
- Install
pip
if it is not already installed
sudo apt install pip
- Install all necessary packages
pip install -r requirements.txt
- Or you can do it manually
pip install ansible
pip install ansible-pylibssh
pip install paramiko
pip install pyats
pip install genie
- Next step - go to desired feature directory or documentation
Detailed documentation could be found here
If you have any questions, please leverage the GitHub discussions board
- L2VNI added
- L3VNI added
- Precheck of configuration file is added
- Access interface configuration is added
- Incremental changes configuration is automated and simplified
- Moving L2VPN EVPN relatead information from
group_vars/all.yml
togroup_vars/overlay_db.yml
- Documentation update
- The release is depricated
- The code is still avaliable in the branch
releases/v1.x.x