네트워크 자동화는 반복적인 설정 작업을 코드로 대체하여 효율성을 높이고 실수를 줄이는 기술입니다. Python과 Ansible을 활용한 네트워크 자동화 입문 가이드입니다.
SECTION 01왜 네트워크 자동화인가?
수동 작업의 문제:
- 스위치 100대에 VLAN 추가: 수시간 소요
- 설정 실수로 인한 장애 위험
- 설정 일관성 유지 어려움
자동화의 효과:
- 반복 작업 수분 내 완료
- 설정 오류 최소화
- 변경 이력 추적 가능
SECTION 02Python으로 Cisco 장비 제어
Netmiko 라이브러리 활용
from netmiko import ConnectHandler
# 장비 연결 정보
device = {
'device_type': 'cisco_ios',
'host': '192.168.1.1',
'username': 'admin',
'password': 'password',
}
# 연결 및 명령 실행
with ConnectHandler(**device) as net_connect:
# 설정 확인
output = net_connect.send_command('show version')
print(output)
# 설정 변경
config_commands = [
'vlan 100',
'name SERVERS',
'exit',
]
net_connect.send_config_set(config_commands)NAPALM으로 멀티벤더 관리
from napalm import get_network_driver
driver = get_network_driver('ios')
device = driver('192.168.1.1', 'admin', 'password')
device.open()
# 인터페이스 정보 조회
interfaces = device.get_interfaces()
for name, info in interfaces.items():
print(f"{name}: {'UP' if info['is_up'] else 'DOWN'}")
device.close()SECTION 03Ansible로 대규모 자동화
인벤토리 파일 (hosts.ini)
[switches]
sw01 ansible_host=192.168.1.1
sw02 ansible_host=192.168.1.2
sw03 ansible_host=192.168.1.3
[switches:vars]
ansible_network_os=ios
ansible_user=admin
ansible_password=password
ansible_connection=network_cliPlaybook 예시 (VLAN 일괄 추가)
---
- name: Add VLAN to all switches
hosts: switches
gather_facts: no
tasks:
- name: Create VLAN 200
cisco.ios.ios_vlans:
config:
- vlan_id: 200
name: GUEST_WIFI
state: merged
- name: Save configuration
cisco.ios.ios_command:
commands:
- write memory실행
ansible-playbook -i hosts.ini add_vlan.ymlSECTION 04자동화 시작 로드맵
1단계 (입문): Python 기초 + Netmiko
- 장비 정보 수집 자동화
- 설정 백업 자동화
2단계 (중급): Ansible + NAPALM
- 설정 변경 자동화
- 멀티벤더 환경 관리
3단계 (고급): Cisco Catalyst Center API
- 의도 기반 네트워킹
- 정책 자동 배포
네트워크 자동화 구축 컨설팅은 송원기 전문가 송원기 기술영업전문가에게 문의주세요.
카카오톡: https://open.kakao.com/o/sFnDlBxi | 이메일: wksong@shcns.co.kr