Nornir는 파이썬(Python)으로 구현된 오픈소스 네트워크 자동화 프레임워크이다. 네트워크 장비의 구성 관리, 상태 점검, 백업, 롤백 등 다양한 작업을 코드 기반으로 수행하도록 설계되었으며, Ansible·Salt 등 기존 IT 자동화 도구와 달리 상태 비저장(stateless) 방식과 파이썬 네이티브 데이터 구조를 활용한다는 특징이 있다.
개요
- 언어·플랫폼: 파이썬 3.x 기반, 운영체제에 독립적이며 Windows, macOS, Linux에서 동작한다.
- 라이선스: Apache License 2.0 하에 배포된다.
- 주요 기능
- 인벤토리 관리: 장비 목록·속성을 YAML, JSON, CSV, 파이썬 딕셔너리 등으로 정의한다.
- 플러그인 구조:
nornir.core및nornir.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월 현재 확인 가능한 공개 정보를 기반으로 작성되었으며, 추가적인 최신 변화가 있을 경우 최신 문서를 참조한다.)