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

Overview

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)

Agenda

Introduction

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

Source of Truth


NetBox
  • 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

APIs


REST APIs
  • 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
  • NX-API REST API Usage
GraphQL
  • 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
  • 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
  • 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
  • Pytest Fundamentals
  • Pytest vs pyATS
  • Pytest Fixtures and Scoping
  • Test Parametrization
  • HTML Reporting with Pytest Plugins
  • Batfish Integration

Config Generation


Jinja2
  • 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
  • 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
  • Git Introduction
  • Staging Changes with Git Add
  • Creating Commits in Git
  • Managing Git Branches
  • Pushing and Pulling with Git
GitHub
  • GitHub Branch Management
  • Tracking Issues on GitHub
  • Using Blame in GitHub
  • Commit History in GitHub
  • Handling Pull Requests on GitHub
  • GitHub Workflow and Collaboration

CI/CD

  • 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