Cisco 스위치 구성 자동화: Python과 SSH를 활용한 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 네트워크 엔지니어, Python 개발자, 자동화 도구 사용자
- 중간 난이도: Python 기초와 네트워킹 지식 필요
핵심 요약
- Python과
paramiko
라이브러리를 사용해 Cisco 스위치의 SSH 기반 구성 자동화 구현 - OOP(객체 지향 프로그래밍)를 적용한
Switch
,SSHConnection
,ConfigPusher
클래스 설계로 모듈화 및 유지보수성 향상 - Cisco Modeling Labs(CML) 환경 설정과
venv
가상 환경 구성이 필수적
섹션별 세부 요약
1. 프로젝트 목적 및 기술 스택
- Minecraft 서버 자동 배포를 위한 물리 네트워크 구축 필요성
- REST API 대신 SSH 기반 자동화 선택: 하드웨어 제한으로 인한 현대적 접근 불가
- paramiko~=3.5.1 버전 사용 권장
2. OOP 기반 코드 설계
- 3개의 주요 클래스 설계:
- Switch
: 스위치 정보 저장 (hostname
, port
, username
)
- SSHConnection
: paramiko.SSHClient
를 활용한 SSH 연결 처리
- ConfigPusher
: 구성 파일을 스위치에 전달
- 객체 간 상호작용:
Main
클래스에서 객체 생성 및 실행 조율
3. 환경 설정 및 실행
- Python 가상 환경 생성:
```bash
python3 -m venv myvenv
source myvenv/bin/activate
pip3 install -r requirements.txt
```
- CML 설정: 외부 커넥터 추가 및 스위치 연결, VLAN 1 인터페이스에 DHCP IP 할당
4. 구성 파일 전송 및 테스트
ConfigPusher.push()
메서드: 구성 파일(cisco_configs/asw1.txt
)의 각 라인을 SSH로 전송- 사용자 생성 및 SSH 설정:
```bash
username cisco privilege 15 secret your_password
ip ssh version 2
```
- 테스트 결과: 호스트명 변경(
hostname PythonIsCool
) 및 기본 게이트웨이 펑셔닝 확인
결론
- OOP 설계를 통해 코드 재사용성과 확장성 향상
- CML 환경 설정과
paramiko
라이브러리 사용이 필수적 - SSH 기반 자동화는 네트워크 장비 관리 효율성 극대화 가능