About this course
Course Overview
The Introducing Automation for Cisco Solutions (CSAU) course gives you a broad overview of network automation skills. Through a combination of lecture and hands-on labs, you will learn the fundamentals of automation such as working on model-driven programmability solutions with Representational State Transfer Configuration Protocol (RESTCONF) and Network Configuration Protocol (NETCONF) protocols. The course also covers data formats and types, including Extensible Markup Language (XML), JavaScript Object Notation (JSON), Yaml Ain’t Markup Language (YAML), and Yet Another Next Generation (YANG), and their value in network automation, along with DevOps tools such as Ansible and Git.
There are no exams currently aligned to this course, the course does however provide foundational knowledge that can help you prepare for several professional-level automation courses and exams:
This course is worth 16 Continuing Education Credits
Target Audience
Engineers looking to gain a broad overview of the skills required to become a next-generation engineer with the ability to program and automate the networks of the future
Course Objectives
After completing this course you should be able to:
- Articulate the role network automation and programmability play in the context of end-to-end network management and operations
- Define and differentiate between waterfall and agile software development methodologies
- Interpret and troubleshoot Python scripts with fundamental programming constructs built for network automation use cases
- Describe how DevOps principles, tools, and pipelines can be applied to network operations
- Understand the role of network automation development environments and associated technologies such as Python virtual environments, Vagrant, and Docker
- Understand and construct HTTP-based API calls to network devices
- Articulate the differences among and common use cases for XML, JSON, YAML, and protobuf
- Construct and interpret Python scripts using the Python requests module to automate devices that have HTTP-based APIs
- Understand the role YANG plays in network automation
- Understand that a number of tools exist to simplify working with YANG models
- Describe the functionality of RESTCONF and NETCONF and the differences between them
- Construct Ansible playbooks to configure network devices and retrieve operational state data from them
- Build Jinja2 templates
Course Content
Examining Network Management and Operations
- Traditional Network Management
- Network Automation and Programmability
- Network Automation Use Cases
- Multidomain Network Automation
Exploring Software Development Methodologies
- Impact of Software
- Waterfall Development Process
- Agile Methodology
Using Python for Network Automation
- Python Fundamentals
- Network Libraries
- Python Package Management
- Netmiko
- Inside Python Modules
Describing NetDevOps: DevOps for Networking
- Development and Operations
- Exploring DevOps Tools
- Git Fundamentals
- Git Branches
- Merge Conflicts
- Continuous Integration
Managing Automation Development Environments
- Need for Reproducible Development Environments
- Python Virtual Environments
- Vagrant
- Docker
Introducing HTTP Network APIs
- API Overview
- HTTP-Based APIs
- RESTful APIs vs Non-RESTful APIs
- HTTP-Based Authentication
- Postman
- Streaming Telemetry
Reviewing Data Formats and Data Encoding
- JavaScript Object Notation
- Extensible Markup Language
- gRPC and Protobuf
- YAML Data Serialization Standard
Using Python Requests to Automate HTTP-Based APIs
- Python Requests Overview
- HTTP Authentication
Exploring YANG
- Introduction to YANG
- Types of YANG Models
Using YANG Tools
- YANG Tool Types
- Pyang
- YANG Explorer
Automating Model-Driven APIs with Python
- NETCONF Overview
- Python ncclient
- RESTCONF Overview
Introducing Ansible for Network Automation
- Configuration Management Tools
- Introduction to Ansibile
- Ansible Inventory File
- Use the Cisco IOS Core Configuration Module
- Ansible Documentation
- Gather Cisco IOS Device Facts
- Use the Cisco IOS Core Command Module
Templating Configurations with Jinja2
- Jinja2 Overview
- Basic YAML
- Configuartion Templating with Ansible
Labs
- Use Network Automation Scripts
- Enforce Python Fundamentals on the Interactive Interpreter
- Automate Networks with Netmiko
- Use the Git Version-Control System and Collaborate on an Internal Project
- Build Reproduceable Automation Environments
- Use HTTP-Based APIs with Postman
- Explore YAML and JSON Data
- Consume HTTP-Based APIs with Python Requests
- Explore YANG Tools
- Explore NETCONF with Python
- Explore RESTCONF with Python
- Configure Network Devices with Ansible
- Collect Network Data with Ansible
- Build and Deploy Configurations with Ansible
Course Prerequisites
Attendees should meet the following prerequisites:
- Routing and switching including Open Shortest Path First (OSPF), Border Gateway Protocol (BGP), and basic configuration features such as interfaces, Simple Network Management Protocol (SNMP), and static routes
- Fundamentals of Python data structures and programming constructs such as loops, conditionals, and classes, or the equivalent of 3–6 months of experience writing Python scripts
- Basic Linux commands for navigating the file system and executing scripts
- Knowledge of working with text editors
- CCNA - Implementing and Administering Cisco Solutions
- DNAPUC - Programming Use Cases for Cisco Digital Network Architecture
Test Certification
Recommended as preparation for the following exams:
- There are no exams currently aligned to this course
Follow on Courses
The following are recommended for further study:- CLAUI - Implementing Automation for Cisco Collaboration Solutions
- DCAUI - Implementing Automation for Cisco Data Center Solutions
- ENAUI - Implementing Automation for Cisco Enterprise Solutions
- SAUI - Implementing Automation for Cisco Security Solutions
- SPAUI - Implementing Automation for Cisco Service Provider Solutions