Home » Network Automation with Python: Netmiko, NAPALM, Nornir และ Ansible
Network Automation with Python: Netmiko, NAPALM, Nornir และ Ansible
Network Automation with Python: Netmiko, NAPALM, Nornir และ Ansible
Network Automation เปลี่ยนการบริหาร network จาก manual CLI ไปสู่ programmatic approach Python เป็นภาษาหลักสำหรับ network automation โดย Netmiko ใช้ SSH เพื่อส่ง CLI commands, NAPALM ให้ vendor-neutral abstraction layer, Nornir เป็น automation framework ที่เร็วและยืดหยุ่น และ Ansible ใช้ YAML playbooks สำหรับ agentless automation ที่ไม่ต้องเขียน code
Network engineer ที่ manage 100+ devices ด้วย CLI ใช้เวลาหลายชั่วโมงสำหรับ tasks ซ้ำๆ เช่น config changes, compliance checks, backup configs Automation ลดเวลาจากชั่วโมงเหลือวินาที ลด human error และให้ consistency ทุก device ได้ config เหมือนกัน
Automation Tools Comparison
| Feature |
Netmiko |
NAPALM |
Nornir |
Ansible |
| Language |
Python library |
Python library |
Python framework |
YAML (no coding) |
| Approach |
SSH screen scraping |
API/CLI abstraction |
Threaded Python |
Playbook-driven |
| Vendor Support |
80+ platforms |
20+ platforms (structured) |
Via plugins (Netmiko/NAPALM) |
Network modules (all vendors) |
| Config Management |
Send CLI commands |
Replace/merge config (atomic) |
Via Netmiko/NAPALM plugins |
Declarative state |
| Parallel Execution |
Manual (threading) |
Manual (threading) |
Built-in (threaded) |
Built-in (forks) |
| Learning Curve |
Low (Python basics) |
Medium |
Medium-High |
Low (YAML) |
| Best For |
Quick scripts, legacy devices |
Multi-vendor config mgmt |
Complex workflows |
Large-scale operations |
Netmiko
| Feature |
รายละเอียด |
| คืออะไร |
Python library สำหรับ SSH connections to network devices |
| How It Works |
SSH connect → send CLI commands → receive output (screen scraping) |
| Platforms |
Cisco IOS/XE/XR/NXOS, Juniper, Arista, HP, Fortinet, Palo Alto, 80+ |
| Key Methods |
send_command() (show), send_config_set() (config), save_config() |
| TextFSM |
Parse unstructured CLI output → structured data (use_textfsm=True) |
| Limitation |
Screen scraping = fragile (output format changes break parsing) |
| Use Case |
Quick scripts, legacy devices ที่ไม่มี API, ad-hoc commands |
NAPALM
| Feature |
รายละเอียด |
| คืออะไร |
Network Automation and Programmability Abstraction Layer with Multivendor support |
| Abstraction |
Same Python code works across vendors (Cisco, Juniper, Arista, etc.) |
| Getters |
get_facts(), get_interfaces(), get_bgp_neighbors() → structured data (dict) |
| Config Management |
load_merge_candidate() / load_replace_candidate() → compare_config() → commit_config() |
| Rollback |
rollback() → revert to previous config (atomic changes) |
| Validation |
compliance_report() → validate config against desired state |
| Limitation |
Limited platform support (20+ vs Netmiko 80+), getter coverage varies |
Nornir
| Feature |
รายละเอียด |
| คืออะไร |
Python automation framework (like Ansible but pure Python) |
| Inventory |
YAML/SimpleInventory: hosts, groups, defaults (like Ansible inventory) |
| Plugins |
nornir_netmiko, nornir_napalm, nornir_scrapli (connection plugins) |
| Parallel |
Built-in threading → run tasks on all devices simultaneously |
| Tasks |
Python functions ที่ run ต่อ host (full Python power) |
| Results |
Structured results per host (success/fail, output, changed) |
| Advantage |
Full Python power + fast (no YAML limitations like Ansible) |
| Use Case |
Complex workflows ที่ Ansible ทำยาก (conditional logic, API calls) |
Ansible for Network
| Feature |
รายละเอียด |
| คืออะไร |
Agentless automation tool ที่ใช้ YAML playbooks (no coding required) |
| Network Modules |
ios_config, nxos_config, junos_config, eos_config, etc. |
| Connection Types |
network_cli (SSH), netconf, httpapi |
| Inventory |
YAML/INI inventory files → define hosts, groups, variables |
| Idempotent |
Desired state → Ansible checks + applies only if needed |
| Roles |
Reusable automation packages (role per function/vendor) |
| Collections |
cisco.ios, junipernetworks.junos, arista.eos (vendor collections) |
| AWX/Tower |
Web UI + API + scheduling + RBAC สำหรับ enterprise |
Common Automation Use Cases
| Use Case |
Tool |
Benefit |
| Config Backup |
Netmiko/Ansible |
Auto backup ทุกวัน → version control (Git) |
| Compliance Check |
NAPALM/Ansible |
Verify configs match desired state → report violations |
| Bulk Config Change |
Ansible/Nornir |
Push config to 100+ devices in minutes (consistent) |
| Network Discovery |
Netmiko + TextFSM |
Discover interfaces, neighbors, VLANs → build inventory |
| OS Upgrade |
Ansible/Nornir |
Upload image → verify MD5 → set boot → reload (automated) |
| Troubleshooting |
Netmiko/Nornir |
Collect show commands from multiple devices → correlate |
Getting Started Path
| Step |
Learn |
Tool |
| 1. Python Basics |
Variables, loops, functions, modules |
Python 3.x |
| 2. First Script |
SSH to device, send show command, parse output |
Netmiko |
| 3. Structured Data |
Parse CLI output → JSON/dict, TextFSM templates |
Netmiko + TextFSM |
| 4. Multi-vendor |
Same code across vendors, config management |
NAPALM |
| 5. Scale Up |
Parallel execution, inventory management |
Nornir or Ansible |
| 6. CI/CD |
Git + automated testing + deployment pipeline |
Git + Ansible/Nornir + CI/CD |
ทิ้งท้าย: Automate the Boring Stuff in Networking
Network Automation Netmiko: SSH + CLI (quick scripts, 80+ platforms, TextFSM parsing) NAPALM: vendor-neutral abstraction (getters + config mgmt + rollback) Nornir: Python framework (threaded, full Python power, complex workflows) Ansible: YAML playbooks (no coding, agentless, enterprise-ready with AWX) Start: Python basics → Netmiko → NAPALM → Nornir/Ansible → CI/CD Use cases: backup, compliance, bulk config, OS upgrade, troubleshooting
อ่านเพิ่มเติมเกี่ยวกับ NETCONF RESTCONF gNMI YANG และ SDN OpenFlow Controllers ที่ siamlancard.com หรือจาก icafeforex.com และ siam2r.com