분류없음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 네떡지기
분류없음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 네떡지기
DevOps/Automation2015.04.19 00:24

 

Ansible Arista  vEOS eAPI  : Today key


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

이번 포스팅은 Ansbile을 사용하여 Arista 장비를 실질적으로 제어하는 예제에 대해서 다뤄봅니다.

실질적인 예제를 통해서 Ansbile을 활용하는 데, 조금은 익숙해질 수 있기를 바랍니다.

기본적으로 여기서는 Arsita 장비에 대해서 다뤘지만,

다른 벤더에서도 유사하게(지난 번 포스팅 처럼, 혹은 다루지 않은 NXAPI 등을 사용하여) 사용할 수 있을 것이기 때문에

해당 Library를 제공하는 모든 장비에 대해서 적용해 볼 수 있을 것 같습니다.


Automation Tool인 Ansible을 활용한 Arista 장비 제어


지난 Ansible Part 3 포스팅에서는  Ansbile을 이용한 Arista 장비 제어와 관련한 초기 환경 구축 설정에 대해서 알아보았습니다.

이번 포스팅에서는 실제 Ansible을 통한 Arista 장비를 제어하는 예제를 살펴봅니다.

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

 

 

예제1) VLAN 생성하기

 

[ YML 작성하기 ]

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

    - 실제 VLAN을 생성할 Tasks를 만드는 데, VLAN을 다루는 예제이기 때문에 VLAN을 관리하기 위한 Library인 eos_vlan을 사용한다.

    - vlan name을 지정하고, vlanid를 설정한다.

 

 

 

[ YML(Playbook) 실행하기 ]

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

    - 기존에 존재하지 않은 VLAN이었기 때문에 Task에서 Changed로 체크된다.

    - ansible_hosts에 설정된 host는 veos1 1대밖에 없었기 때문에, 1대에 대해서만 적용된다.

 

 

[ Arista에서 확인하기 ]

    - VLAN 정보를 확인해면, 아래와 같이 지정된 VLAN 이름을 가진 10번 VLAN이 생긴 것을 확인할 수 있다.

 

 

 

예제2) VLAN 삭제

 

[ YML 작성하기 ]

    - 예제 1과 모든 부분은 동일하며, 단지 state가 추가되었다.

    - state는 반드시 eos_vlan을 사용하기 위해 반드시 설정되어야 하는 속성은 아니며, 미 설정 시에 default로 configured 상태이다.

    - 즉, 예제 1번에서는 state를 사용하지 않았지만, default로 configured 상태이기 때문에 해당 vlan이 설정되게 된다.

    - 반면에 2번의 에제에서는 vlan 10에 대해서 unconfigured를 state로 설정하여 해당 config를 제거하게 된다.

 

 

 

 

[ YML(Playbook) 실행하기 ]

    - 위에서 작성한, 예제 2의 Playbook을 실행하면 예제 1ㅘ 마찬가지로 동일하게 정상적으로 작업이 성공됨을 볼 수 있다. 

 

 

 

[ Arista에서 확인하기 ]

    - 아래의 결과 중의 위의 결과는 예제 1을 실행했을 때의 vlan  10이ㅣ 생성된 거을 확인할 수 있고,

      아래의 결과가 예제 2를 실행하여 vlan 10이 제거된 것을 확인할 수 있다.     

 

 

 

 

예제3) Interface 설정

 

[ YML 작성하기 ]

    - 예제 3은 2개의 Task로 이루어져 있습니다.

    - 첫 번째  task는 Switchport를 설정하는 예제입니다. 특정 인터페이스에 vlan 10으로 Access 모드로 적용합니다.

    - 두 번 째 task는 특정 인터페이스에 Description을 적용합니다.

    - 각 Task는 eos_switchport와 eos_interface의 속성을 사용해서 YML을 작성하게 됩니다.

 

 

 

 

[ YML(Playbook) 실행하기 ]

    - 예제 3을 실행하면, 2개의 Task로 구성되어 있기 때문에 각각 Task를 실행하게 되며, 2개의 Task 적용이 되었음을 확인할 수 있습니다.

 

 

 

 

[ Arista에서 확인하기 ]

    - Eh2 인터페이스에 대해서 vlan 10과 ZIGI_DESC라는 Descritption이 생성됨을 확인할 수 있습니다.

 

 

 

 


 

 이번 포스팅에서는 Ansible을 사용하여 Arista 장비를 제어하는 예제를 3가지 살펴보았습니다.

 Ansible에서 eAPI를 사용하여 Arista 장비를 제어할 수 있는 Library를 통해서 예제에서 살펴본 것 이외의 다양한 설정을 할 수 있습니다.

 하나씩 그러한 예제를 살펴보면, Ansible을 네트워크 장비에서도 좀 더 효율적으로 사용 할 수 있을 것 같습니다.

 

 

 

Posted by 네떡지기
분류없음2014.07.31 23:51

 


벌써 9번째 포스팅에 접어들었네요. ^^;

 

이번 포스팅은 직접 장비가 없어도 해보실 수 있는 VM을 이용하여 실습을 할 수 있도록 하는 환경을 꾸미는 내용입니다.

 

바로 ARISTA의 vEOS를 VMWARE 환경에서 사용할 수 있도록 만들어 보겠습니다.

 

이번 포스팅에서 1대의 가상 머신을 설치해보지만, 여러대의 VM을 띄워서 네트워크 구성도 물론 가능합니다!

 

 

NetworkZIGI Python Git : https://github.com/NetworkZIGI/Python_for_Network

 


 

 

먼저 Arista의 vEOS를 사용하기 위해서, vEOS 이미지를 구하셔야 합니다.

vEOS 이미지는 Arista 홈페이지를 가면, 아래와 같이 vEOS를 다운 받으실 수 있습니다. 
물론 다운을 받기 위해서 가입을 하셔야 합니다. (단, 별도의 파트너 계정일 필요는 없이 회원 가입만으로 다운이 가능합니다.)

 

그리고 버전이 여러개가 있는데,

 

    F 버전 : 기능이 추가된 버전

    M버전 : 안정화된 버전

 

이라고 볼 수 있습니다.

 

 

버전 한가지를 골라서, 해당 버전의 모든 파일과 ISO 파일을 모두 다운 받습니다.

 

다운을 받는데는 시간이 조금 걸리기 때문에, 다운 시켜놓고~ 잠시 네떡지기의 블로그에서 다른 포스팅도 봐주시면 감사하겠습니다.

 

....

 

자 모든 파일이 다운이 끝났으면, 이제부터 환경을 만들어 보겠습니다.

전 과정(?)을 모두 캡춰를 떴으니~ 사진만 보고 따라가셔도 충분히 손쉽게 구축할 수 있습니다.

 

 

Custom 모드를 선택해서 시작합니다.

 

그냥 Next를 하시면 됩니다. ^^

 

아까 홈페이지에서 다운 받은

Aboot-veos-2.0.8.iso

로 지정하시면 됩니다!

 

Linux로 선택하시고, inOther Linux 2.6x 로 선택 하시면  됩니다.

 

 

 

 

적당하게, Virtual Machine Name을 주고, 위치를 지정합니다.

 

Next 클릭! (CPU 1)

 

2048MB 로 지정하시고, Next 선택

 

전 Host-only networking을 했습니다.

 

Next 클릭! (LSI Logic)

  

IDE로 지정하시고, Next 선택

 

 

Disk는 Existing Disk로 지정하시고,

Arista 홈페이지에서 다운받은 이미지 파일(vEOS-4.13.7M.vmdk)을 지정합니다.

Next 선택합니다.

 

모두 끝습니다.

Finish를 선택하시면 됩니다.

 

자, 이제 가상머신을 구동시킵니다!

 

위와 같이 vEOS가 부팅되는 것을 볼 수 있습니다.

 

부팅이 완료되면, 로그인 창이 뜹니다.

기본 계정은 'admin'으로 하시고, 별도의 비밀번호는 없습니다.

 

 

자, 이제 모든 환경이 갖춰졌으니 Python Shell을 띄워서 간단하게 Print까지 한 줄 해보았습니다.

 

이제부터는 집에 있는 컴퓨터로도 실습까지 해 볼 수 있는 멋진 환경을 구축하시게 되었습니다.

 

이번 포스팅은 이만 줄이고~ 다음 포스팅에서 다시 또 조만간 뵙도록 하겠습니다.

Posted by 네떡지기

티스토리 툴바