JNCIA-DEVOPS Notes

My personal study notes for the JNCIA-DEVOPS. I do this so that I can quickly reference and update them and hopefully others might find them useful. There’s multiple training modules / videos available for free on Junos Genius, and if you complete the training and practice test they offer a free voucher to take the exam (usually around $150 USD). https://cloud.contentraven.com/junosgenius

 

Exam topics outline is from the juniper website: https://www.juniper.net/us/en/training/certification/certification-tracks/devops/?tab=jnciadevops

 

Junos Automation Stack and DevOps Concepts

 

  • Automation tools –
  • Automation frameworks
  • Automation APIs
  • DevOps culture, practices, and tools

Waterfall: 

Requirements > Design > Code > Test > Deploy

  • Next phase only starts after finishing previous one
  • Generally considered as lacking flexibility and slow to develop new features
  • The larger the new codebase, the more likely there will be issues in production

Devops: 

 

  • A software or systems development methodology
  • Initially “agile infrastructure” 2008
  • Unifies development, operations, and other teams (enables communication, collaboration, and integration) 
  • Influenced by lean manufacturing
  • Changes in functionality happen frequently to quickly move improvements into production (automation and orchestration, roll back easily if errors are detected)

Agile: 

  • Customer satisfaction, via contnuous delivery of valuable software, is highest priority.
  • Frequent releases
  • Welcome changing requirements
  • Daily cooperation between developers and business people
  • Self-organizing teams reflecting how to become more effective, adjusting accordingly

Image result for manifesto of agile methodology

XML & NETCONF

 

XML concepts and syntax- extensible markup language, a tool used for storing and transporting data. 

Consists of many nested elements. Example: 

XPath concepts and syntax – query language for selecting nodes from an XML document. 

A way of searching and parsing data from XML. 

Note: XPath and XML uses the term “nodes”, but does not correlate to typical network nomenclature of nodes. These nodes refer to the following XML data:

  • Root
  • Element
  • Text
  • Attribute
  • Comment

Absolute Path- uses complete path from the root element to the desired element. 

Relative Path- 

Predicate, 

Good resource for delving into XPath definitions: https://www.tutorialspoint.com/xpath/index.htm

 

NETCONF (RFC 6241) concepts – Network configuration protocol.

Content: XML Data.

Operations: <GET-CONFIG> (retrieve all or part of specified configuration datastore), <edit-config> (edit a configuration datastore by creating, deleting, merging, or replacing content). 

Messages: <RPC> (push / request) <RPC-REPLY> (reply to RPC request), and <NOTIFICATION> (ex. subscribe to updates for operational service status).

Transport:  SSH & TLS, uses port 830

 

XML API concepts and syntax

 

Data Serialization – structuring data to be machine readable. 

 

  • YAML (YAML Ain’t a Markup Language) –  uses white space to denote structure.

 

  • JSON (Javascript Object Notation) – uses square brackets & curly brackets to denote structure. 

 

Ansible – Configuration management and deployment tool. Declarative, idempotent, client-less. 

Ansible core Junos (written and produced by Juniper)

Galaxy Juniper.Junos (written and produced by Juniper)

Inventory location: /etc/ansible/hosts

Variables: Inventory, group_vars, host_vars, custom files 

Playbooks: YAML (the main part of instructions for ansible), example: 

Roles: useful for organizing and splitting up scripts to be re-used elsewhere. 

 

 

Python or PyEZ

 

  • Syntax and concepts
  • Remote Procedure Calls (RPCs)
  • PyEZ exception handling
  • Device status and configuration handling

 

REST API

 

  • Configuring the Junos REST API
  • Using the REST API Explorer
  • Using curl to access the REST API

Things to know: 

Who develops the Ansible core modules for Junos OS? 

Who develops the Ansible Galaxy modules for Junos OS ? 

Know the difference between json and yaml. 

Know what a python dictionary looks like.