Nornir

Nornir는 파이썬(Python)으로 구현된 오픈소스 네트워크 자동화 프레임워크이다. 네트워크 장비의 구성 관리, 상태 점검, 백업, 롤백 등 다양한 작업을 코드 기반으로 수행하도록 설계되었으며, Ansible·Salt 등 기존 IT 자동화 도구와 달리 상태 비저장(stateless) 방식과 파이썬 네이티브 데이터 구조를 활용한다는 특징이 있다.

개요

  • 언어·플랫폼: 파이썬 3.x 기반, 운영체제에 독립적이며 Windows, macOS, Linux에서 동작한다.
  • 라이선스: Apache License 2.0 하에 배포된다.
  • 주요 기능
    • 인벤토리 관리: 장비 목록·속성을 YAML, JSON, CSV, 파이썬 딕셔너리 등으로 정의한다.
    • 플러그인 구조: nornir.corenornir.plugins 패키지를 통해 작업(Task), 연결(Connection), 필터링(Filter) 등을 확장한다.
    • 동시 실행: 멀티스레드·멀티프로세스 모델을 사용해 다수의 장비에 대해 병렬로 작업을 수행한다.
    • 통합 도구: Netmiko·Napalm·Paramiko·Scrapli 등 기존 네트워크 라이브러리와 연동하여 SSH·API 기반 연결을 제공한다.

역사·개발 배경

Nornir는 2017년 GitHub에 최초 공개된 이후, 네트워크 엔지니어와 개발자가 공동으로 유지·보수해 온 커뮤니티 주도 프로젝트이다. 초기 목적은 Ansible·Salt 등 전통적인 자동화 도구가 제공하는 Declarative(선언형) 방식 대신, 파이썬 스크립트 중심의 Imperative(명령형) 접근 방식을 원하는 네트워크 관리자에게 보다 직관적인 인터페이스를 제공하는 데 있었다.

주요 구성 요소

구성 요소 설명
Inventory 장비 정보를 정의하는 파일·데이터 구조. 기본적으로 hosts.yaml·groups.yaml 파일을 사용한다.
Tasks 장비에 실행할 작업을 파이썬 함수 형태로 구현한다. nornir.plugins.tasks에 다양한 기본 태스크가 제공된다(예: netmiko_send_command, napalm_get).
Plugins 연결 방식(Netmiko, Napalm 등), 필터링, 결과 처리 등을 확장한다.
Runner 동시 실행 전략을 지정한다. SerialRunner, ThreadedRunner, MultiprocessingRunner 등이 있다.
Result 작업 실행 후 반환되는 데이터 구조로, 성공·실패 여부와 출력 내용을 포함한다.

활용 사례

  • 대규모 장비 설정 배포: 수백 대의 라우터·스위치에 동일한 ACL·QoS 정책을 일괄 적용.
  • 구성 백업·비교: 정기적으로 장비 구성 파일을 수집하고, 이전 버전과 차이를 분석하여 변경 이력을 관리.
  • 보안 점검: 특정 명령어 실행 결과를 수집해 취약점 여부를 자동 평가.

커뮤니티·지원

  • 공식 저장소: GitHub(https://github.com/nornir-automation/nornir)에서 소스코드와 문서가 제공된다.
  • 문서화: Read the Docs(https://nornir.readthedocs.io)에서 사용법, API 레퍼런스, 예제 등을 확인할 수 있다.
  • 배포: PyPI를 통해 pip install nornir 명령으로 설치 가능하며, 플러그인별 패키지도 별도 배포된다(nornir-netmiko, nornir-napalm 등).

한계·비판

  • 학습 곡선: 파이썬 프로그래밍에 익숙하지 않은 사용자는 초기 설정이 다소 복잡할 수 있다.
  • 상태 관리: 선언형 도구에 비해 상태(Desired State)와 실제 장비 상태의 자동 비교 기능이 기본 제공되지 않는다.

참고 문헌

  • Nornir 공식 문서, Read the Docs.
  • GitHub 리포지터리: nornir-automation/nornir.

(본 내용은 2026년 5월 현재 확인 가능한 공개 정보를 기반으로 작성되었으며, 추가적인 최신 변화가 있을 경우 최신 문서를 참조한다.)

둘러보기

더 찾아볼 만한 주제