Introduction
Cisco Programmable Fabric

About this Lab!

It has been some time now since the concept of Software Defined Networks (SDN) has entered the networking industry and marketplace. The fundamental principle of SDN is to interact with networks programmatically to deploy, control, change, and manage network devices using open interfaces. Over time, the tools for this programmatic interaction have evolved into controllers and DevOps tools that have introduced a mindset shift in the industry to representing network infrastructure as code. Two common terms for this in the industry are Infrastructure as Code (IaC) and Network as Code (NaC). The mindset change brings the managing and provisioning of infrastructure through software development practices and code instead of performing these tasks manually.


In this lab, you assume the role of a network automation engineer. You will use various automation and programmability tools to develop Python scripts and Ansible playbooks to deploy and verify a VXLAN EVPN fabric using Cisco Open NXOS in a staging fabric before deploying and verifying a production (prod) fabric through NetDevOps methodology.


The lab environment makes use of the Nexus 9000v in Cisco Modeling Labs (CML) to provide each student with a staging fabric and prod fabric consisting of three-nodes; a Spine and two Leaf switches. CML and the N9Kv were developed for purposes such as the use in this lab; to test out topologies and the programmable interfaces available for the Nexus 9000 series switch(s). Additionally, the N9Kv can be deployed in VMWare, KVM, and Vagrant.

The lab will guide you through the following:

  • You will start with an NX-API overview to understand Open NXOS' REST interface, various transports, and data structures.
  • With a firm understanding of these concepts, you will combine Python with the Request package and Open NXOS' NX-API to provision the VXLAN EVPN Underlay. The Underlay will be deployed using OSPF as the IGP to advertise Loopback addresses for iBGP EVPN peering and tunnel endpoint (TEP) advertisement later in the lab. PIM will also be provisioned for multicast used for broadcast, unknown unicast, or multicast (data plane), also known as BUM traffic.
  • Next you will use DevOps tooling to deploy your VXLAN EVPN fabric onto your staging fabric with the use of Ansible Network modules. That will complete your development of reusable automation to deploy configuration channges to your VXLAN fabric.
  • You will then write test automation using Cisco pyATS. This configuration and test automation will be integrated into a NetDevOps Continuous Integration, Continuous Delivery (CI/CD) pipeline to perform a network change by testing it against your staging fabric you have been developing against, and pending that passes in the pipeline, will allow you to trigger the deployment and tests to your prod fabric.
  • Finally, you will import your brownfield fabrics into Nexus Dashboard Fabric Controller (NDFC) programmatically. The same DevOps tooling will be used to onboard a new overlay into your fabric by first deploying and testing to your staging fabric through NDFC in a another NetDevOps pipeline, and pending the success of that pipeline, deploy and test to your prod fabric.

There are various implementation models for programming and automating networking devices or entire fabrics, these include:

  • off-box interaction - where a program is executed remotely from the device over Telnet, SSH, or a REST API
  • on-box interaction - where a program is sent to the network device and executed directly on the network device
  • hybrid interaction - where the relationship is agent based methods

This lab will focus on off-box interactions and predominantly make use of Ansible's agentless architecture (requiring no agent) for NXOS and NDFC.



The lab from a high level has the following sections:

  • Introduction
  • Development Environment
  • NX-API Overview
  • NX-API Python
  • Ansible NXOS
  • pyATS
  • NetDevOps
  • Bonus: Postman
  • Bonus: YANG

Please continue to setup your development environment!