Network Programmability for the Enterprise (NPEN) is a four-day instructor-led-course. This NPEN training course teaches how to automate common Cisco enterprise platforms such as IOS-XE and IOS-XR routers as well as ASA firewalls. NterOne’s Network Programmability for the Enterprise course also includes coverage of the Digital Network Architecture ( DNAC ) Applying CCIE-style learning methods, the NPEN training places emphasis on learning via hands-on labs and hands-on demonstrations. The terms “proof-by-Python” and “proof-by-JSON or XML” will be used frequently throughout the course. Find additional course details below, including suggested prerequisites, course objectives, and ideal student-candidates.
Prerequisites
The knowledge and skills that a learner should have before attending this course are as follows:
- CCNP or equivalent experience
- Complete the Programming for Network Engineers (PRNE) ELT or equivalent Python programming experience..
Course Objectives
Upon successful completion of this course, students will be able to meet these overall objectives:
- Use Linux tools that empower network programmers
- Write and troubleshoot Python scripts in the specialized area of Network Programmability
- Understand and interact with Data Models on Cisco routers running IOS-XE and IOS-XR
- Understand and interact with REST, NETCONF and RESTCONF API’s on IOS-XE, IOS-XR and the ASA
- Understand and interact with XML and JSON on IOS-XE, IOS-XR and the ASA
- Understand and interact with the DNAC and its REST/SWAGGER interface
- Learn how to use DevOps tools such as GitHub, VIRL and services offered by Cisco DevNet
- Learn how to use Ansible to configure Cisco routers and firewalls
Module 1: Network Programmability Fundamentals
- Lesson 1: Introduction to Network Programmability
- Lesson 2: Understanding Software-Defined Networking
- Lesson 3: Explore Network Programmability and Automation
- Lesson 4: Examine Open Source Tools and Enterprise Platforms
- Lesson 5: Understand Network Programmability Technology
- Lesson 6: Explore a range of Cisco Platforms and their APIs
Module 2: Linux Primer for Network Engineers
- Lesson 1: Understand the Need to Learn Linux
- Lesson 2: Explore the Linux File System
- Lesson 3: Examine Linux Distributions and Package Managers
- Lesson 4: Work with Files and Directories
- Lesson 5: Explore Linux Processes
Module 3: Linux Tools for Programmers
- Lesson 1: Build a Programmer’s Workbench in Linux
- Lesson 2: Use Complex Grep and Find Commands to Locate Files
- Lesson 3: Explore powerful use cases of BASH scripting for network programmers
Module 4: Python Fundamentals for Network Engineers – Part 1
- Lesson 1: Understanding Python
- Lesson 2: Executing Python Code
- Lesson 3: Examining Python Helper Utilities and Function
- Lesson 4: Writing Idiomatic Python
- Lesson 5: Exploring Common Python Data Types
Module 5: Python Fundamentals for Network Engineers – Part 2
- Lesson 1: Lists
- Lesson 2: Dictionaries
- Lesson 3: Loops
- Lesson 4: Functions
- Lesson 5: Working with Files
Module 6: Writing and Troubleshooting Python Scripts
- Lesson 1: Writing Scripts
- Lesson 2: Executing Scripts
- Lesson 3: Analyzing Code
- Lesson 4: Error Handling
Module 7: Python Libraries
- Lesson 1: Python Libraries
- Lesson 2: Python Modules
- Lesson 3: Python Packages
Module 8: Data Models in the Enterprise
- Lesson 1: Introduction to Data Models
- Lesson 2: Data Models Defined
- Lesson 3: The power of using a Data Model
- Lesson 4: The pain of not using a Data Model
- Lesson 5: Review of the SNMP Data Model
- Lesson 6: SNMP compared to the Cisco Data Center Managed Object Model
- Lesson 7: SNMP compared to a YANG derived Data Model
- Lesson 8: The Power of YANG + Cisco DevNet ydk-gen in auto-generating Python Modules
- Lesson 9: An Example of a State of the Art Network Programmability environment using Python with a Data Model
Module 9: YANG Data Modeling
- Lesson 1: YANG Overview
- Lesson 2: YANG Module and Module Header
- Lesson 3: YANG: Fundamental Definitions and Statement
- Lesson 4: YANG Types and the TypeDef Statement
- Lesson 5: YANG Choice and Grouping Statements
- Lesson 6: YANG Miscellaneous Statements
- Lesson 7: Putting Things Together with YANG
- Lesson 8: YANG Model Examples with XML and JSON
Module 10: YANG Tools
- Lesson 1: YANG Validator
- Lesson 2: The YANG Tool
- Lesson 3: YANG Development Kit
- Lesson 4: YDK-Py API Structure
- Lesson 5: YDK-Gen
- Lesson 6: YANG Explorer
Module 11: Network Programmability with IOS-XE, IOS-XR Routers and the ASA Firewall
- Lesson 1: Introduction to Network APIs and Protocols
- Lesson 2: Evolution of Device Management and Programmability
- Lesson 3: Data Encoding Formats
- Lesson 4: JSON
- Lesson 5: XML
- Lesson 6: Data Model-Driven Programmability Stack
- Lesson 7: REST
- Lesson 8: NETCONF
- Lesson 9: RESTCONF
- Lesson 10: gRPC
Module 12: IOS-XE Programmability
- Lesson 1: Cisco IOS-XE API Overview
- Lesson 2: IOS-XE NETCONF API
- Lesson 3: IOS-XE RESTCONF API
- Lesson 4: Configuring and verifying NETCONF and RESTCONF on the IOS-XE
Module 13: IOS-XR Programmability
- Lesson 1: Cisco IOS-XR API Overview
- Lesson 2: IOS-XR NETCONF API
- Lesson 3: The difference between the deployment of NETCONF on IOS-XE and IOS-XR
- Lesson 4: Configuring and verifying NETCONF on the IOS-XR
Module 14: ASA Programmability
- Lesson 1: ASA REST API Overview
- Lesson 2: ASA REST Agent Prerequisites
- Lesson 3: Using the ASA REST API without a Data Model; Using the REST API Documentation
- Lesson 4: Configuring and verifying REST on the ASA
Module 15: Programming the DNAC
- Lesson 1: Cisco Digital Network Architecture ( DNAC)
- Lesson 2: DNAC Overview
- Lesson 3: DNAC Platform Architecture
- Lesson 4: Performing Basic Tasks with the DNAC
- Lesson 5: Performing Network Discovery with the DNAC
- Lesson 6: Exploring DNAC Network Programmability with Postman
- Lesson 7: Review of DNAC Applications and their API’s
- Lesson 8: Review the DNAC and the Swagger REST interface
Module 16: DevOps in the Enterprise
- Lesson 1: Version Control
- Lesson 2: Version Control Systems
- Lesson 3: Overview of Git
- Lesson 4: Git Architecture
- Lesson 5: Git Commands
- Lesson 6: Git Workflow
- Lesson 7: Git Branches
- Lesson 8: Using Git
- Lesson 9: Collaborating with GitHub
- Lesson 10: GitHub Pull Request: Fork and Pull
- Lesson 11: Changing Views
Module 17: Automated Testing
- Lesson 1: Network Test Infrastructure
- Lesson 2: Network Function Virtualization
- Lesson 3: VIRL
- Lesson 4: DevNet
- Lesson 5: DevNet Sandbox
- Lesson 6: DevNet Learning Labs
- Lesson 7: DevNet GitHub
- Lesson 8: Network Testing
- Lesson 9: Unit Tests
Module 18: Automating with Ansible
- Lesson 1: Ansible Overview
- Lesson 2: Ansible Base Modules
- Lesson 3: Ansible and YAML
- Lesson 4: Automating the deployment of a complex configuration to IOS-XE, IOS-XR and ASA devices with Ansible
The primary audience for this course is as follows:
- CCNP or equivalent experience
- Complete the Programming for Network Engineers (PRNE) ELT or equivalent Python programming experience