분류없음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 네떡지기
DevOps/Automation2015.05.02 04:47

Automation, Arista, Ansible, Configuration  : Today Key


Automation for Networker의 8번째이자, Ansible의 7번째 포스팅입니다.

이번 포스팅에서는 실제 가장 적용이 많이 될 만한, Ansible을 활용한 Configuration 백업에 대한 예제입니다.


 

 

Automation Tool인 Ansible을 활용한 Arista Config 백업하기

 


지난 번까지 Ansible에서 eAPI Library를 활용한 Arista 장비를 제어하는 예제를 알아보았습니다.

 

이번에는 제일 유용하게(?) 사용될만한 Configruation 백업에 대한 예제를 다뤄봅니다.

지난 번에 다뤄진 예제와 비슷한 듯 하지만, 몇 가지 더 고려해야 할 만한 부분이 있는 예제입니다.

 

 

< YML  작성하기 >

  - Configuration을 백업하기 위한 commands를 vars로 입력하는 데, enable을 먼저 한 이후에 show running-config를 한다.

    왜냐하면, show running-config를 실행하기 위해서는 enable 모드에서 사용하기 때문이다.

  - 기본 ansbile을 사용하기 위한 Arista Library의 eos_command에서는 json 모드만 지원한다.

    하지만, show running-config는 json을 사용하여 실행하려고 하면 eAPI에서 json으로는 해당 command를 지원하지 않기 때문에

    eos_command에서 json 방식이 아닌 text 방식으로 eAPI에 command를 전송하도록 변경해야 한다.

    (현재도 별도의 라이브러리의 변경없이 text방식이 지원된다면, YML에서만 수정을 해도 된다. 혹은 추후 지원 시..)

  - YML을 작성하면서 언급한 위의 show running-config를 하기 위한 모드 변경 및 방식 변경과 관련한 부분은 arista에서 지원하는

    eAPI Command를 통해서 웹접속으로 직접 명령과 결과 확인이 가능하다. 

 

---
-  name: ARISTA-ANSIBLE
   hosts: arista
   vars:
     commands:
       - enable
       - show running-config

   tasks:
     - name: ZIGI_Arista_eAPI_Command
       eos_command1: eapi_username={{eapi_username}}
                    eapi_password={{eapi_password}}
                    eapi_hostname={{eapi_hostname}}
                    eapi_port={{eapi_port}}
       args: { commands: "{{ commands }}" }
       register: result

     - debug: var=result
     - name: var=result
       template: src=my2.j2 dest=./result2

 

 

 

< Template >

   - 기존의 예제처럼 결과 값의 result의 output에 대한 템플릿을 사용할 수도 있지만,

     아래와 같이 템플릿을 지정하면, 실제 장비에 바로 설정이 가능한 config 형식으로 결과 값을 만들 수 있다.

     (결과 값으로 반환된 값을 Python 데이터 타입으로 확인해보면, 아래와 같이 템플릿으로 지정할 수 있다. )

 

 {{ result['output'][1]['response']['output'] }}

 

 

 

 

< Playbook 실행하기 >

   - 위에서 작성한 YML과 Template을 가지고 실행하면 다음과 같이 정상적으로 실행되었음을 알 수 있다.

   - 그리고 실제 결과 값은 아래와 같이 조금은 한 눈에 들어오지 않게 출력해준다.

 

 

 

 

< 결과 확인하기 >

    - 이제 템플릿을 사용하여, 가공한 결과 값의 파일(result2)를 확인해 보면, 실제 장비 Configuration을 백업하던 것처럼

      바로 적용이 가능하도록 Config가 백업된 것을 확인할 수 있다.

 

.

 

 

Posted by 네떡지기
분류없음2015.04.24 23:22

Ansible Arista  vEOS eAPI  : Today key


Automation for Networker의 8번째이자, Ansible의 6번째 포스팅입니다.  

이번 포스팅은 Ansbile을 사용하여 Arista 장비의 상태 값을 가져오는 예제입니다. 

 

 

지난 번에 간단한 테스트까지만 해두고 놔두었다가, 오늘 지인의 물음에 의해서 다시 점심시간에... 후다닥..

다시 테스트하고... 간단하게 나마.. 포스팅해봅니다.


 

Automation Tool인 Ansible을 활용한 Arista 상태 값 확인


지난 번에는 Ansible에서 eAPI Library를 활용한 Arista 장비를 제어하는 것을 몇 가지 알아보았습니다.

이번에는 동일하게 Library를 사용하여 Arista 장비의 상태 값을 확인하는 예제를 다뤄봅니다.

전체 예제는 Ansible 관리 서버와 Arista VM 1대를 이용하여 진행을 하게 되며, 개인 PC에서도 동일하게 구성하여 테스트가 가능합니다.

 

 

 

예제1) Version 정보 확인

 

[ YML 작성하기 ]

    - YML의 기본 작성 형식에 따라서 이름과, 적용할 Hosts에 대해서 지정한다.

    - eAPI에서 JSON을 사용한 eos_command를 적용하기 위해, eos_command를 라이브러리를 사용한다.

    - 적용하고자 하는 command를 vars에 지정한다. 아래의 예제에서는 1개의 명령어만 있지만, 여러개를 지정할 수 있다.

    - register를 사용하여, Command한 결과 값을 변수처럼 저장하여 사용할 수 있다. 

      이렇게 저장된 값은 template, action, statements에서 사용하게 된다.

    - 그리고, Playbook 실행 시에 결과 값을 볼 수 있도록 debug에 해당 결과 값을 출력하게 하였다.

    - 마지막으로 결과 값을 템플릿을 사용하여 파일로 생성할 수 도 있다.

 

 

 

※ 마지막의 action 항목은 Ansible 0.8 이후부터는 anction 대신에 다음과 같이 사용해도 된다. (결과 값은 동일)

 

 template: src=my.j2 dest=./result1

 

 

 

 

[ Template ]

    - Playbook에서 사용된 결과 값에 대해 파일로 저장하기 위해서 사용한 Template 파일을 보면 아래와 같다.

    - result에서의 'output'에 대한 값만을 결과값 내용으로 취한다.

      무슨 내용인지는 아래의 실행 결과와 생성된 파일의 내용을 보면 보다 이해하기 쉽다.

 

 

 

 

[ YML(Playbook) 실행하기 ]

    - 위에서 작성한, Playbook을 실행하면 아래와 같이 정상적으로 작성이 성공한 것을 볼 수 있다.

    - Debug에서 보면, show version에 대한 결과 값을 확인할 수 있다.

      결과 값은 eapi의 json을 사용하여 나온 결과 값으로 출력되게 된다.

    - 결과 값에서서 보면 result안에 output이라는 항목이 이고, 실제 이 output이 원하는 show version에 대한 내용이다.

      위에서 본 template에서 result안의 output라고 지정한 이유는 이 때문이다. 실제 아래 생성된 결과 파일의 내용을 보면

      Debug에서 볼 수 있는 전체 결과가 아닌 output에 대한 결과값만 저장되었음을 볼 수 있다.

 

 

[ 생성된 결과 파일 확인하기 ]

    - 위의 결과 값 중에 output에 대한 내역에 대해서만 결과 파일로 저장된 것을 확인할 수 있다.

Posted by 네떡지기

티스토리 툴바