네트워크관리사 기출문제 총정리 ⑱ 네트워크 자동화 – Ansible·Python·NETCONF·REST

네트워크 자동화의 필요성

네트워크 규모가 커지면서 수작업 CLI 설정의 한계가 드러났습니다. 네트워크 자동화는 설정 오류 감소, 배포 속도 향상, 운영 비용 절감을 목적으로 합니다. 네트워크관리사 시험에서도 자동화 도구와 프로토콜이 출제됩니다.

Ansible을 이용한 네트워크 자동화

에이전트 없이(agentless) SSH 또는 API로 네트워크 장비를 설정하는 자동화 도구입니다.

Ansible 구성 요소

  • 인벤토리(Inventory): 관리 대상 호스트/그룹 목록
  • 플레이북(Playbook): YAML 형식의 자동화 절차 정의 파일
  • 태스크(Task): 개별 작업 단위
  • 모듈(Module): 특정 작업 수행 단위 (ios_command, eos_config 등)
  • 롤(Role): 플레이북 구조화 단위

네트워크 모듈 예시

  • cisco.ios.ios_command: Cisco IOS CLI 명령 실행
  • cisco.ios.ios_config: IOS 설정 변경
  • arista.eos.eos_vlans: Arista EOS VLAN 관리

Python 네트워크 자동화 라이브러리

Netmiko

  • SSH 기반으로 네트워크 장비에 접속하여 CLI 명령 실행
  • Cisco, Juniper, Arista 등 다양한 벤더 지원
  • ConnectHandler로 장비 연결, send_command()로 명령 실행

NAPALM (Network Automation and Programmability Abstraction Layer)

  • 여러 벤더의 장비를 통일된 API로 관리
  • get_interfaces(), get_bgp_neighbors() 등 추상화된 메서드 제공

Nornir

  • Python 기반 네트워크 자동화 프레임워크. Ansible과 달리 순수 Python

NETCONF와 YANG

NETCONF (RFC 6241)

  • 네트워크 장비 설정·상태 관리를 위한 XML 기반 프로토콜
  • SSH 위에서 동작 (포트 830)
  • 운영: get / 설정: edit-config / 검증: validate / 커밋: commit
  • 데이터스토어: running, candidate, startup

YANG (RFC 6020)

  • NETCONF·RESTCONF 데이터 모델링 언어
  • 장비 설정·상태 데이터의 구조를 정의

RESTCONF

  • NETCONF의 기능을 HTTP/HTTPS 기반 REST API로 제공 (RFC 8040)
  • JSON 또는 XML 형식 지원
  • GET(조회), PUT(교체), PATCH(수정), POST(생성), DELETE(삭제)
  • 포트: 443(HTTPS)

IaC (Infrastructure as Code) 도구

  • Terraform: 선언적 인프라 코드. 클라우드·네트워크 리소스 프로비저닝
  • Ansible: 설정 관리 및 오케스트레이션
  • Git: 네트워크 설정을 코드로 버전 관리 (GitOps)

시험 핵심 포인트

  • Ansible: 에이전트리스, YAML 플레이북, SSH 기반
  • NETCONF: XML, SSH(포트 830), candidate 데이터스토어
  • RESTCONF: HTTP REST + YANG 데이터 모델, JSON/XML
  • Netmiko: Python SSH 라이브러리, 멀티벤더 CLI 자동화
  • YANG: 데이터 모델 언어 (NETCONF/RESTCONF에서 사용)

마무리

네트워크 자동화는 현대 네트워크 운영의 필수 기술로 자리 잡았습니다. Ansible과 Python 기반 도구의 역할 차이, NETCONF·RESTCONF의 프로토콜 특성을 중심으로 학습하세요.

Leave a Comment