Cisco Network Programming & Automation


In this four (4) day course, you will learn about foundational skills as they pertain to network automation and programmability.  The network industry is in the midst of change, and one part of that is the operational models and technologies used to manage and operate networks on a day to day basis.  For over 20 years, the CLI has been the primary means to manage networks.  Going forward, we are starting to see more open and programmable network devices emerge – this means having device APIs not only on network switches, but also on SDN controllers in the form of northbound REST APIs.  In addition, we are also seeing network devices be integrated with existing DevOps automation tools.

This course covers the skills needed to take advantage of these modern network devices and controller systems.  The course is divided into two parts.  Part 1 covers raw concepts and technologies and Part 2 focuses on automating Cisco Nexus switches.



While there are no programming, software/dev, or automation prerequisites, students should have a good grasp on basic networking concepts.


Target Audience

This course is ideal for those that have a traditional Route/Switch and CLI background and want to start to dive into network automation and programmability.  This course is for you if you’re an end user (network operator, admin, architect, engineer) looking to gain the skills needed to start your automation journey or if you’re a Cisco Engineer (SE, SA, TSA, CSE, Partner Engineer) looking to better advise and help your customers.


Course Outline

Days 1 – 2
  • Introduction to Python
    • Python Interpreter
    • Data Types
    • Conditionals
    • Loops
    • Writing Python Scripts
    • Functions
    • Working with Files
    • Passing Arguments from the Command Line
    • Learning how to import Python modules
  • Working with Git
    • Git Overview
    • Git and GitHub
    • Common Git commands and functions
    • Making a Pull Request
  • Data Types
    • YAML
    • JSON
    • XML
  • Device Templating
    • Jinja2
    • Mako
    • ERB
  • DevOps
    • Overview
    • Culture
    • Automation Tools (Ansible, Puppet)
    • Introduction to Continuous Integration (Git, Gerrit, Jenkins, etc.)
  • Labs:
    • Every topic has labs listed above except Puppet and Continuous Integration although time permitting, they may be offered.


Days 3 – 4
  • Network Programmability & Automation
    • Overview
    • Why?
    • Benefits
    • Use Cases
  • Nexus Programmability Options
    • Python on-box
    • NX-API
  • Automating Device Configurations
    • Python
    • Jinja2
    • YAML
  • NX-API
    • Sandbox
    • Writing Scripts
    • Data Gathering
    • Configuration Automation
  • Using Ansible to Automate Nexus Switches
    • Ansible Overview
    • Device Templating with Ansible
    • Configure VLANs, Interfaces, VPCs, and more with Ansible
    • Ansible Tower
  • Extending Ansible: 
    • Understand how to write a custom module
  • Labs:
    • Every major topic has several labs.


Note: this is an in depth look at NX-API and Ansible for networking.  It is not just having 1 or 2 labs glossing over the API.  You will build scripts from the ground up to learn how to use NX-API.

By the end of this class, students should have enough information to continue building on the scripts developed in class, but also see the value that programmatic interfaces can and will offer the industry.