분류없음2015.05.22 12:56

pyeapi, api, node, python, programmability : today Key


이번 포스팅은 지난 시간에 이어서, arista의 pyeapi에 대한 간략한 포스팅입니다.

pyeapi를 사용 시에 기본적으로 보게 된, 몇 가지의 코드 내용을 간략하게 알아봅니다.

별도로 구현부까지는 세부적으로 알아보지 않고, 각 주요 메서드에 대한 사용법과 설명만 하였습니다.

추후에 필요에 따라서 이렇게 주요 메서드에 대해서는 추가로 알아 볼 예정이며,

또한 물론 각 메서드를 사용한 코드와 동작 결과에 대한 예제도 함께 알아보겠습니다.


 


class Node(object): 

  

   def config(self, commands):

       ▷ commands는 String이나 List형으로 구성되나, String형은 내부적으로 List Type으로 다시 변경해서 처리된다.

       ▷ 실제 Command 실행은 run.commands 메서드를 사용

 


   def enable(self, commands, encoding='json', strict=False):

       ▷ Command는 List 형태로 전송

       ▷ 기존 Command 요청 형태는 json이며, json을 지원하지 않는 경우에는 text로 전송하도록 함

       ▷ strtict가 false 경우에는 json을 지원하지 않는 command에 대해서 text 방식으로 시도.

       ▷ Config 모드의 명령은 지원하지 않음.

       ▷ 실제 Command 실행은 run.commands 메서드를 사용

 

 

    def run_commands(self, commands, encoding='json'):

       ▷ 명령어를 전송하는 하위 계층의 메서드

       ▷ 일반적으로 직접 사용하지 않고, config나 enable 메서드를 통해 사용

       ▷ 실제 장비로 Command의 전송은 node 클래스의 멤버의 _connection의 execute 메서드 사용

           ※  _connection

                - connect_to 메서드 연결 시, Node 객체를 생성하게 되는데, Node 객체 초기화 시에

                 연결하고자 하는 node의 정보를 가지고 make_connection 메서드를 통해서 node와 연결할 객체를

                 eapi 연결 type에 따라서 socket, http_local, http, https EapiConnection을 호출

          

 

    def api(self, name, namespace='pyeapy.api'):

       ▷ name 매개변수를 통해서 API 모듈을 자동으로 Load

       ▷ 기본 namespace는 pyepai.api 이므로, api 내의 모듈 명만 써주면 됨.

       ▷ initialize 메서드와 instance 메서드에 확인하고, 해동 모듈을 리턴 함.

 

 

    def connect_to(name):

       ▷  매개변수의 name으로 node 정보가 있는 파일에서, 해당 node의 접속 정보(ip, id, pass 등)을 가지고 node 객체를 생성

 

Posted by 네떡지기
분류없음2015.05.13 00:26

pyeapi, eapi, python, arista, example : Today Key 

이번 포스팅에서는 지난 번에 알아보았던  pyepai에서 제공하는 몇 가지 예제에 대해서 간략하게 알아보려고 합니다.

예제를 통해서 이러한 기능들도 사용할 수 있구나? 정도 ^^

무엇이든, 왜? 사용해야 하는지 아는게 중요할테니,

이번 포스팅에서는 몇 가지 예제를 통해서 왜? 써야 하는지를 생각해 볼 수 있었으면 합니다.

 


Arsita Python Client for eAPI (pyeapi) 예제


pyepai 예제 List

  • pyeapi를 설치하고 나면, 아래와 같이 몇 가지 예제를 코드를 제공합니다.

      여기에서는 simple과 유사한 기능을 하는 sysmac을 제외한 나머지 코드를 살펴보려고 합니다.

 

 

 

 

get-config.py

  • EOS 장비의 running-config와 startup-config 그리고 2개의 Config에 대한 비교 내용을 출력하는 예제입니다.

  • 해당 예제 코드를 실행하면 아래와 같은 결과를 볼 수 있습니다.

 

 

  •위의 실행 결과를 보여주는 코드는 다음과 같습니다.

 

 

  •pyeapi 라이브러리를 import한 이후에 node정보가 있는 configuration을 Load합니다.

     즉, 지난 pyeapi 첫 번째 시간에 얘기했던 configuration 파일을 default로 사용할 수도 있지만, 위의 예제처럼 원하는 파일을

     Load해서도 사용할 수 있습니다.

 

  •EOS 장비의 config를 가져오는 것은, get_config 메서드를 사용하며 매개변수로 running-config 혹은 startup-config를

     전달함에 따라서 알맞은 Config를 가져올 수 있습니다.

  •마찬가지로 2번째 매개변수로 'diffs'를 전달하게 되며, running-config와 startup-config를 비교한 결과 값을 출력할 수 있습니다.

  •하지만, 위의 결과 출력 값을 한 눈에 보기는 좀 어렵기 때문에 예제 소스의 출력 부분을 조금 수정하면 아래와 같이 보기 편하게

     나타낼 수도 있습니다.

 

 

 

simple

  •2번째 예제는 간단하게 장비의 MAC-Address를 가져와서 출력하는 예제입니다.

  •예제 코드는 직접 확인해보고 분석해보면 좋을 것 같습니다.  그렇게 길지도 않고 직관적으로 파악이 가능한 정도입니다.

 

 

 

vlans_api.py

  • 이번에는 Vlan정보를 출력하고, vlan을 생성 그리고 삭제하는 예제도 있습니다. 

       마찬가지로 예제 코드는 직접 확인해보시고 분석하시기를 추천해드립니다

 

 

 

      이번 포스팅에서는 첫 번째 예졔에서 약간의 부분을 빼고는 기술적인 부분은 거의 배제하고 올렸습니다.

      코드를 처음부터 다 짤 필요도 없으며, 다 짤 수 없어도 기존에 만들어진 예제를 보고 응용할 수 있으면 충분히 활용이 가능할 것입니다.

      그러기 위해서는 위아 같은 간단한 예제를 통해서, 이런 저런 다양한 기능에 대해서 미리 알아보는 과정이 필요하게 됩니다.

      반드시 예제로 주어진 코드는 한 번씩 살펴보고 예제 코드를 변형하여 자신만의 코드로 활용해 보시길 바랍니다. 

       

 

Posted by 네떡지기
분류없음2015.05.10 23:29

pyeapi, eapi, python, arista : Today Key 

 

Last Update : 2015.05.19 Windows에서 설치하기

이번 포스팅에서는 Arista EOS를 관리할 수 있는 방법 중에 하나로, 기존의 eAPI를 좀 더 쉽게 사용 할 수 있도록 제공해주는

 

Python 라이브러리인 pyeapi에 대해서 다뤄봅니다.

pyeapi를 이용한 EOS 장비 관리를 위한 환경 구축부터 몇 가지 예제를 앞으로 몇 번의 포스팅을 통해서 알아보게 됩니다.

또한, pyeapi를 사용하여 Ansible을 사용하는 예제는 Automation for Networker 시리즈의 포스팅으로도 알아볼 예정입니다.


 


Arsita Python Client for eAPI (pyeapi)


Arista EOS Command API(eAPI)

  • EOS Version 4.12부터 사용 가능

  • Management plane application을 구축하여, 장비의 상태 정보나 설정을 손쉬게 관리할 수 있도록 함.

 

Python Client for eAPI

  • eAPI 작업을 보다 쉽게 구축하기 위해 만들어진 Python Client.

  • 원격지의 EOS Node(장비)에 대해서 eAPI의 HTTP/S 를 통한 제어가 되도록 설계 됨.

 

 


○ 설치하기

  •pip를 사용하여 설치하거나, Github를 통해서 설치가 가능하다.

  •본 포스팅에서는 Github를 통해서 pyeapi를 설치한다.

  •아래와 같이 Github를 통해서 pyeapi를 다운 받은 후에, install 한다.

 

 

 

 Windows 에서 설치하기

 

 

 

 

 

 

 

 

 

○ pyeapi 초기 설정하기

  •pyepai를 사용하기 위해서는 관리하기 위한 Node에 대한 설정을 Configuration 파일에 해야 한다.

  •Configuration File은 INI Style로 구성하며, 다수의 Node를 포함 할 수 있다.

  •Configuration File은 ~/.eapi.conf 에 설정하며, 설정 파일 구성은 다음과 같다.

 

 [connection:zigi1]
 host: 10.1.1.11
 username: zigi
 password: zigi
 transport: https

 

 

 

 

○ pyeapi로 장비 Version 확인하기

  •pyeapi 라이브러리를 먼저 Import 한 후에 관리하고자 하는 장비를 연결하는 데,

     이 때에 Configuration 파일에서 지정한 Naming을 사용한다.

  •장비를 연결한 후에는 Node에 대한 인스턴스를 리턴한다.

  •위의 실행 예제에 대한 결과 값은 다음과 같다.

 

 

 •위의 결과 값은 사용자가 알아보기는 쉽지 않기 때문에 적절하게 다음과 같이 결과 값을 가공하면 좀 더 쉽게 알아볼 수 있다.

   

 

 

다음 포스팅에서는 pyeapi를 사용한 보다 다양한 예제를 다뤄보겠습니다.

 

 

 
Posted by 네떡지기

티스토리 툴바