네트워크 자동화의 필요성
수백 개의 네트워크 장비를 수동으로 관리하는 것은 비효율적이고 오류가 발생하기 쉽습니다. 네트워크관리사 시험에서는 Python 기반 Netmiko, NAPALM, Nornir, TextFSM 라이브러리 활용이 핵심 출제 범위입니다.
Paramiko와 Netmiko
- Paramiko: Python SSH 라이브러리. 저수준 SSH 세션. 상호작용 처리에 추가 코드 필요
- Netmiko: Paramiko 기반 고수준 라이브러리. 다양한 벤더(Cisco IOS/NXOS/ASA, Juniper, Arista, Huawei) 지원. 자동 프롬프트 처리
- 주요 메서드:
- connect() 또는 ConnectHandler() – 연결 생성
- send_command() – 명령 실행 및 출력 반환
- send_config_set() – 구성 모드에서 명령 실행
- disconnect() – 연결 종료
NAPALM(Network Automation and Programmability Abstraction Layer)
벤더 독립적인 네트워크 자동화 라이브러리로 통일된 API를 제공합니다.
- 게터(Getter): get_interfaces(), get_bgp_neighbors(), get_arp_table(). 벤더 무관하게 정규화된 데이터 반환
- 구성 관리: load_merge_candidate(), load_replace_candidate(), compare_config(), commit_config(). 원자적 구성 변경
- 지원 드라이버: ios, eos(Arista), junos, nxos, vyos
TextFSM과 NTC-Templates
CLI 출력을 구조화된 데이터로 파싱하는 라이브러리입니다.
- TextFSM: 상태 기계 기반 파서. 템플릿으로 텍스트 출력을 JSON/리스트로 변환
- NTC-Templates: 다양한 벤더 명령어에 대한 사전 제작 TextFSM 템플릿 모음
- Netmiko 통합: use_textfsm=True 옵션으로 자동 파싱
Nornir
순수 Python 기반 네트워크 자동화 프레임워크입니다. Ansible과 달리 Python 코드로 직접 작성해 더 높은 유연성을 제공합니다.
- 인벤토리: YAML 파일(hosts.yaml, groups.yaml)로 장비 정의
- 태스크(Task): Netmiko, NAPALM, RESTCONF 플러그인을 태스크로 실행
- 멀티스레딩: 기본적으로 병렬 실행(num_workers 설정)
- 결과(Result): 각 호스트별 결과를 Result 객체로 반환
네트워크관리사 기출 핵심 정리
- Netmiko = Paramiko 기반 멀티벤더 SSH 자동화
- NAPALM = 벤더 독립적 게터/구성 관리 API
- TextFSM = CLI 텍스트 → 구조화 데이터 파싱
- Nornir = Python 기반 병렬 네트워크 자동화 프레임워크
- NAPALM compare_config() = 변경 적용 전 차이 확인