Cisco
Technology
Network Design
NPEN: Network Programmability for the Enterprise (NPEN)

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.

About the course

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
Course content

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
Who Should Attend

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