Ansible 네트워크 자동화
개요
Ansible은 Red Hat이 개발한 오픈소스 IT 자동화 도구로, 네트워크 자동화 분야에서 가장 널리 사용되는 솔루션 중 하나입니다.
주요 특징
1. 에이전트리스 아키텍처
- 원격 장비에 에이전트 설치 불필요
- SSH 또는 API를 통한 직접 통신
- 관리 오버헤드 최소화
2. 플레이북 기반 자동화
---
- name: Configure Cisco IOS Devices
hosts: cisco_routers
gather_facts: no
tasks:
- name: Configure interface
cisco.ios.ios_interface:
name: GigabitEthernet0/1
description: "To Core Switch"
enabled: true
3. 멀티 벤더 지원
- Cisco IOS/IOS-XE/NX-OS
- Juniper Junos
- Arista EOS
- F5, Palo Alto Networks
- 100+ 네트워크 모듈 제공
네트워크 모듈 컬렉션
Cisco 모듈
cisco.ios- Cisco IOS 플랫폼cisco.nxos- Cisco Nexuscisco.iosxr- Cisco IOS-XR
Juniper 모듈
juniper.junos- Junos OS
Arista 모듈
arista.eos- Arista EOS
실전 사용 사례
1. 대량 설정 변경
- name: Update NTP servers across fleet
hosts: all_routers
tasks:
- name: Configure NTP
ios_config:
lines:
- ntp server 10.1.1.1
- ntp server 10.1.1.2
2. 컴플라이언스 체크
- name: Verify security baseline
hosts: production_switches
tasks:
- name: Check if SSH is enabled
ios_command:
commands:
- show ip ssh
register: ssh_output
- name: Fail if SSH disabled
fail:
msg: "SSH is not enabled"
when: "'SSH Enabled' not in ssh_output.stdout[0]"
3. 자동 백업
- name: Daily configuration backup
hosts: network_devices
tasks:
- name: Backup config
ios_config:
backup: yes
backup_options:
filename: "{{ inventory_hostname }}_{{ ansible_date_time.date }}.cfg"
설치 방법
pip를 통한 설치
pip install ansible
ansible-galaxy collection install cisco.ios
ansible-galaxy collection install juniper.junos
인벤토리 설정
[cisco_routers]
router1 ansible_host=192.168.1.1
router2 ansible_host=192.168.1.2
[cisco_routers:vars]
ansible_network_os=ios
ansible_user=admin
ansible_password=password
ansible_connection=network_cli
장점
✓ 대규모 인프라 관리에 최적 ✓ 풍부한 커뮤니티와 문서 ✓ YAML 기반의 읽기 쉬운 문법 ✓ 멀티 벤더 지원 ✓ 멱등성(Idempotency) 보장
단점
✗ SSH 연결 오버헤드로 인한 속도 제한 ✗ 복잡한 로직 구현 시 Python 코드 필요 ✗ 실시간 모니터링에는 부적합
라이센스
GPL v3
링크
- 공식 사이트: https://www.ansible.com
- GitHub: https://github.com/ansible/ansible
- 문서: https://docs.ansible.com/ansible/latest/network/