"Fantastic course, with an excellent instructor who is a clear subject matter expert in the field of network automation."


Join our Network Automation Python Bootcamp, carefully designed to lead you through the various technologies, workflows, and tools essential to succeed in network automation. The best way to learn is by doing so; this Bootcamp has been carefully constructed to provide the maximum hands-on experience through labs based on real-world scenarios.

What You Will Learn

By the end of this course, you will be able to:

  • Model and Validate your network configurations.
  • Automate deployment and Test pre/post updates.
  • Version Control and Review configurations collaboratively.
  • Implement CI/CD workflows.

Tools/Technologies Covered

  • NetBox (SoT ; Source of Truth)
  • Batfish and Pytest (Pre-testing)
  • Cisco pyATS/Genie (Post-testing)
  • Jinja (Configuration templating)
  • JSON Schema (Schema validation)
  • RESTful and GraphQL APIs (Data retrieval)
  • Ansible (Configuration management)
  • Git (Version control)
  • CI/CD (Automated workflows)



  • Network Automation Use Cases
  • Elements of Network Automation
  • Principles of Network Automation

Source of Truth

  • NetBox Introduction
  • Source of Truth Concepts
  • Features of NetBox
  • NetBox Use Cases
  • Organizational Modeling
  • Device Modeling
  • Device Type Templating
  • Connection Modeling
  • IP Address Management (IPAM)
  • Rack Elevation Views


  • REST APIs Overview
  • HTTP Methods, Headers, and Responses
  • HTTP Status Codes
  • Structure of a REST Query
  • Authenticating REST Queries
  • REST API Communication
  • Using Postman for REST APIs
  • Querying REST APIs with Python
  • NetBox REST API Usage
  • GraphQL Fundamentals
  • Components of GraphQL
  • GraphQL Communication
  • Comparing GraphQL and REST
  • Formulating GraphQL Queries
  • GraphQL Variables
  • GraphQL Arguments
  • Exploring with GraphiQL
  • GraphQL in Python
  • NetBox GraphQL API Integration

Network Testing

  • pyATS Introduction
  • pyATS Testbeds
  • CLI vs Python in pyATS
  • Genie Parser
  • Learning with Genie
  • Genie Differences
  • AETest Framework
  • EasyPy Jobs
  • pyATS with GraphQL and NetBox
  • Batfish Overview
  • Batfish Deployment
  • Batfish Snapshots
  • Config Analysis in Batfish
  • Control-Plane Analysis
  • Flow Analysis with Batfish
  • Batfish L2 Caveats
  • Data Querying with Pandas
  • Pytest Fundamentals
  • Pytest vs pyATS
  • Pytest Fixtures and Scoping
  • Test Parametrization
  • HTML Reporting with Pytest Plugins
  • Batfish Integration

Config Generation

  • Jinja2 Overview
  • Jinja2 Variables
  • Jinja2 Loops
  • Jinja2 Conditionals
  • Lists and Dictionaries in Jinja2
  • Template Modularization with Includes
  • White Space Control in Jinja2
  • Jinja2 Filters: Built-in and Custom
Schema Validation
  • Schema Validation Introduction
  • Basics of JSON Schema
  • JSON Schema Components
  • JSON Schema Validators

Config Management

  • Ansible Overview
  • Ansible vs. Nornir
  • Static Ansible Inventory
  • Dynamic Inventory with NetBox
  • Ansible Tasks
  • Ansible Loops
  • Ansible Variables
  • Host/Group Variables in Ansible
  • Ansible Modules
  • Lookup Plugins in Ansible
  • Ansible Filters
  • Ansible with Jinja2
  • Ansible Dry Runs
  • Check Mode in Ansible
  • Ansible Facts
  • Ansible, NetBox, and GraphQL Integration
  • Populating NetBox with Ansible

Version Control

  • Git Introduction
  • Staging Changes with Git Add
  • Creating Commits in Git
  • Managing Git Branches
  • Pushing and Pulling with Git
  • GitHub Branch Management
  • Tracking Issues on GitHub
  • Using Blame in GitHub
  • Commit History in GitHub
  • Handling Pull Requests on GitHub
  • GitHub Workflow and Collaboration


  • Introduction to CI/CD Concepts
  • Getting Started with GitHub Actions
  • Understanding Network CI/CD Workflow
  • Exploring GitHub Actions
  • Understanding GitHub Runners
  • Managing Secrets in GitHub
  • Configuring GitHub Actions