About this course
Course Overview
This five-day course provides students with Junos platform automation knowledge through hands-on development. Students receive hands-on experience with tools and languages relevant to the Junos OS platform. The course includes an introduction to the Junos XML API, YANG and NETCONF. The course focuses on using Python and the PyEZ library to create commit scripts, operation (op) scripts, and event scripts. It also covers an introduction to automation/DevOps tools using Ansible. Finally the course discuses the use of Autoinstallation and JSNAPy automation tools. Through demonstrations and hands-on labs, students will gain experience in automating the Junos operating system and device operations.
This course is based on the Junos OS Release 16.2R1.
Target Audience
This course benefits individuals responsible for configuring and monitoring devices running the Junos OS.
Course Objectives
After successfully completing this course, you should be able to:
- Describe the NETCONF protocol.
- Explain the capabilities of the Junos OS XML API.
- Describe the use of XSLT, SLAX, and XPath in the XML API.
- Describe the Junos Automation UI and explain the role of gRPC, NETCONF, and REST in Junos Automation.
- Identify the languages, frameworks, management suites, and tools used in automating Junos.
- Describe the YANG Protocol and explain the capabilities of YANG.
- Use the YANG model to issue Junos commands and to configure Junos.
- Explain the benefits of using JSON and YAML.
- List where JSON and YAML are used in Junos Automation.
- Convert between JSON, YAML, and XML.
- Describe the features and benefits of using Python in Junos automation.
- Configure Junos devices to use Python and create simple Python scripts.
- Describe the function of Junos operation, commit, event, and SNMP scripts.
- Implement Junos operation, commit, event, and SNMP scripts using Python.
- Identify how Junos automation uses Jinja2 and create Python scripts that use Jinja2.
- Explain how PyEZ makes Junos automation easier and the Junos OS support for PyEZ.
- Use PyEZ to gather facts from Junos, perform configuration tasks, and use PyEZ to manipulate the file system and perform system upgrades to Junos.
- Implement OpenConfig in the Junos OS.
- Describe the process of implementing custom YANG modules.
- Implement a translation script for a custom YANG module.
- Explain the use of the Junos REST API in automation.
- Use the Junos REST API to get information from Junos.
- Describe what JET is and what it includes.
- Create a project in the JET IDE.
- Execute scripts using on-box and off-box automation.
- Explain the four JET application development workflows.
- Describe how Ansible is used in Junos automation and install Ansible.
- Create Ansible playbooks to automate Junos.
- Describe how JSNAPy can help automate Junos devices.
- Implement JSNAPy into a Junos environment.
- Describe how ZTP works.
- Configure in-band ZTP and out-of-band ZTP.
Course Content
Junos Automation Overview
- Why Automate
- Junos MGD Based Automation
- Junos JSD Based Automation
- Automation Languages, Libraries and Frameworks
- Automation Management Systems
- Other Junos Automation Tools
- NETCONF and the XML API
- NETCONF
- XML API
- XML API programming languages
- XML API tools
- Lab 1:Exploring the XML API
- YANG
- YANG Overview
- YANG Modules
- YANG Syntax
- Junos YANG Case Studies
- Creating and Using Non-Native YANG Modules
- Lab 2: Using YANG
- Jason and YAML
- Origins of JSON and YAML
- Features and benefits
- JSON and YAML uses in Junos automation
- Creating well-formed JSON and YAML documents
- Conversion to and from XML
- Lab 3: Using JSON and YAML
- Python in Junos
- Python features and benefits
- Junos support of Python
- Python requirements and installation
- Pip and the Python Interactive interface
- Python modules for Junos
- Using jxmlease
- Review of Python syntax
- Lab 4: Implementing Python in Junos
- Junos Automation Scripting Using Python
- Overview of Junos operation, commit, event, and SNMP scripts
- Junos processing of operation, commit, event, and SNMP scripts
- Use Case - Operation scripts
- Use Case - Commit scripts
- Use Case - Event scripts
- Use Case - SNMP scripts
- Lab 5: Python Automation Scripts
- Jinja2 Templating Language
- Overview of Features and benefits of Jinja2
- Junos support of Jinja2
- Jinja2 syntax
- Jinja2 examples in Python
- Use Case - creating a Jinja2 template
- Lab 6: Using Jinja2
- PyEZ
- Overview - PyEZ
- Installing PyEZ
- Authenticating PyEZ users
- Use Case - Retrieving facts from devices
- Use Case - Configuration management
- Use Case - File system and software upgrades
- Lab 7: Junos Automation with PyEZ
- OpenConfig and Custom YANG Modules
- Introduction to OpenConfig and custom YANG modules
- OpenConfig Implementation
- Custom YANG Module Implementation
- Translation Scripts
- Lab 8: Custom YANG Models
- The Junos OS REST API
- REST Overview
- The Junos Implementation of REST
- Tools for working with REST
- cURL
- REST API Explorer
- Use Case - Using the Junos REST API
- Lab 9: Implementing the Junos REST API
- Junos Extension Toolkit
- Jet overview and components
- Ephemeral database
- Platform independent - JET APIs
- gPRPC
- JET application development workflows
- JET IDE overview
- Installing the JET IDE and creating projects
- The JET store
- Lab 10: JET IDE gRPC, and JET APIs
- Day 5
- Using Ansible to Automate Junos
- Ansible Overview
- Installing Ansible
- Creating and executing Ansible playbooks to manage devices running Junos OS
- Use Case - Using Ansible to configure devices running Junos OS
- Use Case - Using Ansible to install software on devices running Junos OS
- Use Case - Using Ansible to reboot or shut down devices running Junos OS
- Use Case - Using Ansible to revert a device running Junos OS to a factory defaultconfiguration
- Lab 11: Automating Junos with Ansible
- Junos Automation with JSNAP and JSNAPy
- JSNAPy Overview
- Installation
- Integration into Ansible
- JSNAPy d.Snapcheck, Snapshot, and Diff functions
- Lab 12: Configuring JSNAPy
- Zero Touch Provisioning
- ZTP Overview
- In-band using DHCP, Python
- Out-of-band, Ansible, Netconify
- XSLT
- Introduction to XSLT
- Templates
- Flow Control
- XSLT Script Structure
- Additional References
Course Prerequisites
Students should have intermediate-level networking knowledge and an understanding of the Open Systems Interconnection (OSI) model and the TCP/IP protocol suite. Students should also have familiarity with a programming language such as C, C++, Perl, Python, Ruby, or Java. Students should also attend the Introduction to the Junos Operating System (IJOS) course prior to attending this class. Lastly, a high level understanding of object-oriented programming is a plus, but not a requirement.
Recommended prerequisites:
- IJOS - Introduction to the Junos Operating System