Ansible Arista vEOS eAPI : Today key
Automation for Networker의 7번째이자, Ansible의 5번째 포스팅입니다.
이번 포스팅은 Ansbile을 사용하여 Arista 장비를 실질적으로 제어하는 예제에 대해서 다뤄봅니다.
실질적인 예제를 통해서 Ansbile을 활용하는 데, 조금은 익숙해질 수 있기를 바랍니다.
기본적으로 여기서는 Arsita 장비에 대해서 다뤘지만,
다른 벤더에서도 유사하게(지난 번 포스팅 처럼, 혹은 다루지 않은 NXAPI 등을 사용하여) 사용할 수 있을 것이기 때문에
해당 Library를 제공하는 모든 장비에 대해서 적용해 볼 수 있을 것 같습니다.
Automation Tool인 Ansible을 활용한 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을 네트워크 장비에서도 좀 더 효율적으로 사용 할 수 있을 것 같습니다.