취소
다음에 대한 결과 표시 
다음에 대한 검색 
다음을 의미합니까? 
cancel
843
VIEWS
2
Helpful
0
의견
Inseob Kim
Cisco Employee
Cisco Employee

안녕하세요,

대표적인 인프라 설정 자동화 도구인 Ansible을 이용하여 다수의 시스코 Nexus 스위치의 설정을 간편하게 확인하고 변경이 가능합니다.

Ansible 2.9.10 이상의 버전에서는 Cisco NXOS 컬렉션이 지원되며, 상세 내용은 아래 링크에서 확인 가능합니다.

https://docs.ansible.com/ansible/latest/collections/cisco/nxos/index.html

 

아래는 Ansible을 이용하여 여러 스위치의 인터페이스 상태를 확인하는 예시입니다.

먼저, Ansible이 설치된 장비에서 (필요한 경우) Cisco NXOS 컬렉션을 설치합니다. 

 

 

ansible-galaxy collection install cisco.nxos

 

 

 

 Ansible로 관리할 Nexus 스위치에 대한 접속정보를 Ansible 인벤토리 파일에 작성합니다. 아래는 작성된 파일의 예시입니다. n3k1, n3k2라는 2개의 스위치에 대한 ssh 접속을 위한 정보를 작성하였습니다. 파일명은 hosts로 작성하였습니다.

 

 

[nexus]
n3k1 ansible_host=10.10.10.10 ansible_user=admin ansible_password=cisco12345
n3k2 ansible_host=10.10.10.11 ansible_user=admin ansible_password=cisco12345

[nexus:vars]
ansible_connection=ansible.netcommon.network_cli
ansible_network_os=cisco.nxos.nxos

 

 

 

다음은 각 스위치의 인터페이스 정보를 수집하여, CSV형식의 파일로 작성해주는 Ansible Playbook을 작성합니다. Playbook은 각 스위치에서 아래 3개의 작업을 순차적으로 실행합니다. 파일명은 interface.yml로 작성하였습니다.

  • NXOS Command를 실행
  • 실행 결과에서 특정정보만 추출. 예) Ethernet 타입의 인터페이스만 추출
  • 각 스위치의 인터페이스 정보를 하나의 CSV 파일로 저장하기

 

 

---
- hosts: nexus
  gather_facts: no
  connection: ansible.netcommon.network_cli

  tasks:
  - name: Get interface information in JSON format
    cisco.nxos.nxos_command:
      commands: show interface brief | json
    register: interface

  - name: Extract only ethernet attributes from all interfaces
    ansible.builtin.set_fact: 
      extracted: "{{ interface | json_query('stdout[0].TABLE_interface.ROW_interface[?type==`eth`]') }}"

  - name: Generate interface information file in CSV format
    ansible.builtin.copy:
      content: |
        host,interface,state,speed,portmode
        {% for host in ansible_play_hosts %}
        {% for item in extracted %}
        {{ host }},{{ item['interface'] }},{{ item['state'] }},{{ item['speed'] }},{{ item['portmode'] }}
        {% endfor %}
        {% endfor %}
      dest: interfaces.csv

 

 

 

 마지막으로 작성된 Ansible Playbook을 실행합니다!

 

 

ansible-playbook -i hosts interface.yml

 

 

InseobKim_0-1680060142947.png

 

실행 결과, 아래와 같은 CSV 파일이 생성된 것을 확인할 수 있습니다.

InseobKim_0-1680058411599.png

 

본 예제의 코드는 여기에서 참고하실 수 있습니다.

감사합니다!

시작하기

상단의 검색창에 키워드, 문구, 또는 질문을 입력하여 궁금한 내용을 찾아보세요.

이곳에서의 여러분의 여정이 훌륭하기를 바랍니다! 시스코 커뮤니티에 빠르게 익숙해지는 데 도움이 되는 몇 가지 링크를 준비했습니다.

빠른 링크