본문 바로가기

DevOps/Programmability

Programmability for Networker : Part 16 (Junos PyEZ:1)



PyEZ라는 Junos OS 장비를 다룰 수 있도록 해주는 Python용 micro-framwork라고 하는 Library를 다뤄봅니다.

이번 포스팅에서는 PyEZ가 무엇인지 아주 간단히, 그리고 아주 간단한 예제를 통해서 가볍게 접근해봅니다. 



Juniper PyEZ Library


○ PyEZ 란?

     - Junos OS 장비를 원격에서 관리 및 자동화하는 Python으로 만든 'micro-framework'

     - Junos OS 혹은 , Junos OS XML API에 대한 이해가 복잡하게 필요하지 않음

     - 비개발자에게는 원격지의 Junos OS 장비의 자동화 업무 등의 할 수 있도록 하는 간단한 Power Shell 역할을 함.

     - 개발자에게는 보다 큰 네트워크 인프라의 자동화 관점에서 사용할 수 있는 확장성 있게 사용할 수 있는 Library 역할을 함. 


○ PyEZ 기능

     - Junos OS CLI의 기반에서의 동일한 기능을 할 수 있도록 설계.

     - 'fact'를 사용한 Software version, serial 등의 정보 제공

     - 현재 동작 상태 정보를 확인 ('Show' 명령)

     - snippets와 templates를 사용하여, unstructured configuration 변경

     - 추상화 된 모델을 통하여 structured configuration 변경

 

 Architecture

     - ncclient library는 NETCONF를 통해서 벤더에 상관없이 사용 가능하도록 함

     - Junos-pyez는 Junos OS 장비를 쉽게 통신하여 관리할 수 있도록 만들어진 Micro-framework.



 



PyEZ Library Install

 

1. 다음과 같이 PyEZ Library를 사용하기 위하여 Install을 한다. [ Windows 기준 ]

     ※ Install 문서 Link.

     https://techwiki.juniper.net/Automation_Scripting/010_Getting_Started_and_Reference/Junos_PyEZ/Installation#Windows

 

 

     정상적으로 Junos PyEZ  Library가 설치된 것을 확인할 수 있다.


※ 주의사항 Paramiko 설치되어 있어야 함.

                           → jnpr.junos.Device 에서 paramiko Library를 Import해서 사용. 

 




PyEZ 처음 사용해보기

   - PyEZ Library를 사용하여, Junos OS 장비에 접속하여 해당 장비의 Hostname과 Version 정보를 가져오기

   - 장비 접속 시, jnpr.junos의 Device라는 클래스를 사용하고, 해당 클래스에서 제공하는 facts를 사용하여 필요한 정보를 가져온다.

   - 아래는 10.1.1.97의 IP를 가진 Junos OS 장비에 접속하여 정보를 가져와서 출력하는 예제입니다.