Home » Network Automation คู่มือ Ansible Python สำหรับ Network Engineer
Network Automation คู่มือ Ansible Python สำหรับ Network Engineer
Network Automation คืออะไร? ทำไม Network Engineer ต้องเรียนรู้
Network Automation คือ การใช้ Software เช่น Ansible, Python หรือเครื่องมืออื่นในการตั้งค่า จัดการ และตรวจสอบอุปกรณ์ Network อัตโนมัติ แทนการ Login เข้าอุปกรณ์ทีละตัวแล้วพิมพ์ Command องค์กรที่มี Switch 50 ตัว ถ้าต้องเปลี่ยน VLAN หรืออัปเดต Config ทีละตัวใช้เวลาหลายชั่วโมง แต่ถ้าใช้ Automation ทำเสร็จภายในนาที ลดเวลา ลดข้อผิดพลาดจากมนุษย์ และทำซ้ำได้ทุกครั้ง
ทำไมต้อง Automate Network
| ปัญหา Manual |
Automation แก้อย่างไร |
| ช้า: Config Switch 50 ตัว ใช้เวลาหลายชั่วโมง |
Config 50 ตัวพร้อมกันใน 5 นาที |
| ผิดพลาด: พิมพ์ผิด Copy ผิด ลืม Config |
ใช้ Template เดียวกัน ไม่มีข้อผิดพลาด |
| ไม่สม่ำเสมอ: Config แต่ละตัวไม่เหมือนกัน |
Config เหมือนกันทุกตัว Consistent |
| ตรวจสอบยาก: ไม่รู้ว่า Config ตรงตาม Standard ไหม |
Compliance Check อัตโนมัติ |
| ทำซ้ำไม่ได้: ทำด้วยมือ ผลลัพธ์อาจต่างกัน |
Playbook/Script ทำซ้ำได้ทุกครั้ง |
เครื่องมือ Network Automation
| เครื่องมือ |
ประเภท |
ความยาก |
เหมาะกับ |
| Ansible |
Configuration Management |
ง่าย (YAML) |
Config อุปกรณ์จำนวนมาก Provisioning |
| Python + Netmiko |
Scripting |
ปานกลาง |
Task เฉพาะทาง Custom Script |
| Python + NAPALM |
Scripting + Abstraction |
ปานกลาง |
Config Management หลาย Vendor |
| Terraform |
Infrastructure as Code |
ปานกลาง |
Cloud Network, Firewall Rules |
| Nornir |
Python Framework |
ยาก |
Automation ขั้นสูง Parallel Execution |
| Oxidized/RANCID |
Config Backup |
ง่าย |
Auto Backup Config ทุกวัน |
เริ่มต้น Ansible สำหรับ Network
Ansible คืออะไร
- Agentless: ไม่ต้องติดตั้งอะไรบนอุปกรณ์ Network เชื่อมต่อผ่าน SSH
- Playbook: เขียนเป็น YAML อ่านง่าย ไม่ต้องเขียนโปรแกรม
- Idempotent: รันกี่ครั้งก็ได้ผลลัพธ์เดียวกัน ปลอดภัย
- Module: มี Module สำหรับ Cisco, MikroTik, Juniper, Arista, FortiGate ฯลฯ
ตัวอย่าง Ansible Playbook
# backup_config.yml - Backup Config Cisco Switch ทุกตัว
---
- name: Backup Switch Config
hosts: switches
gather_facts: no
tasks:
- name: Get running config
cisco.ios.ios_config:
backup: yes
register: config_output
- name: Save to file
copy:
content: "{{ config_output.backup_path }}"
dest: "./backups/{{ inventory_hostname }}.cfg"
ตัวอย่าง Use Case
- Backup Config ทุกวัน: Cron Job รัน Ansible Backup ทุกคืน เก็บใน Git
- เพิ่ม VLAN ทุก Switch: Playbook เพิ่ม VLAN 100 ชื่อ “IoT” ทุก Switch พร้อมกัน
- อัปเดต NTP/Syslog: เปลี่ยน NTP Server หรือ Syslog Server ทุกอุปกรณ์ครั้งเดียว
- Compliance Check: ตรวจว่าทุก Switch มี Banner, NTP, Syslog, SNMP ตรงตาม Standard
- Firmware Upgrade: อัปเดต Firmware Switch ทุกตัวอัตโนมัติ (กับ Staging + Reboot)
เริ่มต้น Python สำหรับ Network
Netmiko — SSH เข้าอุปกรณ์ Network
# backup_switch.py - Backup Config ผ่าน SSH
from netmiko import ConnectHandler
device = {
"device_type": "cisco_ios",
"host": "10.0.20.1",
"username": "admin",
"password": "P@ssw0rd",
}
conn = ConnectHandler(**device)
config = conn.send_command("show running-config")
with open("backup_core-sw01.cfg", "w") as f:
f.write(config)
conn.disconnect()
print("Backup completed!")
NAPALM — Multi-vendor Abstraction
- NAPALM คืออะไร: Library ที่ abstract การเข้าถึงอุปกรณ์ Network หลาย Vendor
- รองรับ: Cisco IOS, Juniper JunOS, Arista EOS, FortiOS, MikroTik (Community)
- ฟีเจอร์: get_facts(), get_interfaces(), get_bgp_neighbors(), load_merge_candidate()
- Config Diff: เปรียบเทียบ Config ก่อน-หลัง ก่อน Commit จริง
NetDevOps — Network + DevOps
- Git: เก็บ Config Template Playbook ทั้งหมดใน Git Version Control
- CI/CD: ใช้ CI/CD Pipeline (GitLab CI, GitHub Actions) รัน Automation อัตโนมัติ
- Config as Code: Config ทุกอย่างเป็น Code เก็บใน Git Review ก่อน Deploy
- Testing: ทดสอบ Config ใน Lab ก่อน Deploy Production
Automation Roadmap สำหรับ Network Engineer
| ระยะ |
สิ่งที่ต้องเรียน |
ระยะเวลา |
| Phase 1 |
Linux พื้นฐาน, Git, YAML |
2-4 สัปดาห์ |
| Phase 2 |
Ansible พื้นฐาน, Playbook, Inventory |
4-6 สัปดาห์ |
| Phase 3 |
Python พื้นฐาน, Netmiko, Paramiko |
6-8 สัปดาห์ |
| Phase 4 |
NAPALM, Jinja2 Template, REST API |
4-6 สัปดาห์ |
| Phase 5 |
CI/CD, Terraform, Nornir, NetDevOps |
ต่อเนื่อง |
Automation Best Practices
- เริ่มจาก Read-only: เริ่มจาก Script ที่อ่านข้อมูล (show command, backup) ก่อน เขียน Config ทีหลัง
- ทดสอบใน Lab: ทดสอบ Playbook/Script ใน Lab ก่อน Production เสมอ
- Version Control: เก็บทุกอย่างใน Git Commit ทุกการเปลี่ยนแปลง
- Rollback Plan: มี Rollback Plan สำหรับ Automation ที่เปลี่ยน Config
- Logging: บันทึก Log ทุกครั้งที่รัน Automation ใครรัน เมื่อไหร่ ผลเป็นอย่างไร
- Secret Management: อย่าเก็บ Password ใน Playbook/Script ใช้ Ansible Vault หรือ Environment Variable
สรุป Network Automation — อนาคตของ Network Engineer
Network Automation เป็นทักษะที่ Network Engineer ทุกคนต้องเรียนรู้ เริ่มจาก Ansible สำหรับ Config Management และ Python สำหรับ Custom Script สิ่งสำคัญคือเริ่มจาก Read-only ทดสอบใน Lab และเก็บทุกอย่างใน Git หากต้องการข้อมูลเพิ่มเติม ติดตามได้ที่ SiamLanCard.com