🔷 I. Giới thiệu tổng quan
🔷 II. Đặc điểm nổi bật của pyATS
🔷 III. Kiến trúc của pyATS
pyATS được chia thành các thành phần chính:
🔷 IV. Các khả năng chính
✅ 1. Testbed & Topology
🔷 V. So sánh với các framework khác
🔷 VI. Các use-case thực tế
🔷 VII. Demo cấu hình đơn giản
📝 Testbed YAML:
testbed:
name: simple_lab
devices:
r1:
os: iosxe
type: router
connections:
cli:
protocol: ssh
ip: 192.168.1.1
🧪 Script Python đơn giản:
from genie.testbed import load
testbed = load('testbed.yaml')
r1 = testbed.devices['r1']
r1.connect()
output = r1.parse('show ip interface brief')
print(output)
🔷 VIII. Các công cụ hỗ trợ khác
🔷 IX. Học và thực hành pyATS ở đâu?
🔷 X. Tổng kết
Nếu bạn làm việc trong môi trường mạng chuyên nghiệp, đặc biệt là với hạ tầng lớn hoặc môi trường cần kiểm thử liên tục, pyATS là lựa chọn số 1.
- Tên đầy đủ: Python Automated Test System (viết tắt: pyATS)
- Tác giả: Được Cisco Systems phát triển nội bộ từ hơn 10 năm trước.
- Mục tiêu ban đầu: Dùng để test nội bộ firmware và phần mềm mạng Cisco.
- Hiện tại: Đã mở mã nguồn một phần – phục vụ cộng đồng DevNet.
- Mức độ sử dụng: Cisco sử dụng pyATS để chạy hơn 3 triệu bài test/tháng trong hệ thống CI/CD của họ.
🔷 II. Đặc điểm nổi bật của pyATS
| ✅ Python-based | Viết hoàn toàn bằng Python – dễ tích hợp, dễ mở rộng. |
| 🔁 Hỗ trợ tự động hóa | Tự động kiểm thử cấu hình, trạng thái, intent-based verification. |
| ⚙️ Hỗ trợ đa nền tảng | Không chỉ hỗ trợ thiết bị Cisco, mà còn tương thích với thiết bị Juniper, Arista, v.v. |
| 🧪 Tích hợp Testbed & Topology | Dễ dàng định nghĩa testbed YAML và mô hình mạng. |
| 🔍 Khả năng phân tích | So sánh cấu hình và trạng thái trước/sau để phát hiện lỗi. |
| 🤝 Phù hợp NetDevOps | Kết hợp được với Jenkins, GitLab CI/CD, Ansible, Terraform, v.v. |
🔷 III. Kiến trúc của pyATS
pyATS được chia thành các thành phần chính:
| pyATS core | Nền tảng lõi – điều phối, xử lý test, xử lý testbed. |
| genie | Thư viện cho parsing output, validation, compare, test logic. |
| genie.libs.sdk | Thư viện SDK sẵn có để điều khiển thiết bị qua CLI/NETCONF/RESTCONF. |
| genie.conf | Mô hình hoá cấu hình mạng. |
🔷 IV. Các khả năng chính
✅ 1. Testbed & Topology
- Định nghĩa toàn bộ mạng trong file YAML.
- Kết nối nhiều thiết bị qua Telnet, SSH, hoặc Console.
- Tự động parse lệnh show thành dạng dictionary (structured data).
- Hỗ trợ hơn 1000 command với thiết bị Cisco.
- Tự động thực hiện các hành động (shutdown, reload, v.v).
- Xác minh cấu hình, trạng thái, và intent.
- So sánh trạng thái trước và sau test (vd: diff pre-post test).
- Phù hợp kiểm thử thay đổi cấu hình (change validation).
- Hỗ trợ tạo báo cáo dạng HTML, JSON, JUnit.
- Ghi log chi tiết theo thời gian thực.
🔷 V. So sánh với các framework khác
| pyATS | ✅ Rất tốt | Trung bình | ✅ ✅ | ✅ ✅ ✅ | ✅ ✅ ✅ |
| Ansible | Trung bình | ✅ ✅ ✅ | Trung bình | ❌ | ✅ ✅ |
| Robot Framework | Trung bình | ✅ ✅ | Trung bình | ❌ | ✅ |
| Nornir | ✅ Tốt | ✅ ✅ | ✅ ✅ | Có (Netmiko/NAPALM) | ✅ |
🔷 VI. Các use-case thực tế
| 🔄 Regression Testing | So sánh trạng thái thiết bị trước/sau cập nhật phần mềm. |
| 📦 Zero-Touch Provisioning | Tự động hóa kiểm tra thiết bị khi mới cài đặt. |
| 🔐 Network Security Validation | Kiểm tra chính sách ACL, NAT, route filtering. |
| 📊 State Consistency | Đảm bảo trạng thái routing/BGP/MPLS khớp với thiết kế. |
| ⚠️ Fault Isolation | Phát hiện cấu hình lỗi do change trong pipeline DevOps. |
🔷 VII. Demo cấu hình đơn giản
📝 Testbed YAML:
testbed:
name: simple_lab
devices:
r1:
os: iosxe
type: router
connections:
cli:
protocol: ssh
ip: 192.168.1.1
🧪 Script Python đơn giản:
from genie.testbed import load
testbed = load('testbed.yaml')
r1 = testbed.devices['r1']
r1.connect()
output = r1.parse('show ip interface brief')
print(output)
🔷 VIII. Các công cụ hỗ trợ khác
| Easypy | Chạy tập hợp test case từ CLI (pytest-like). |
| Blitz | Tạo test nhanh không cần viết mã Python. |
| Genie CLI | CLI tiện dụng để debug, test nhanh. |
🔷 IX. Học và thực hành pyATS ở đâu?
- 🔹 Cisco DevNet pyATS Documentation
- 🔹 Cisco DevNet Sandbox: có lab mô phỏng sẵn.
- 🔹 GitHub: Có rất nhiều mã mẫu và plugin.
- 🔹 Khóa học trên Cisco U
🔷 X. Tổng kết
| ✅ Mạnh mẽ, chính xác cao | ❗ Cần học cú pháp riêng |
| ✅ Chuẩn hóa bởi Cisco | ❗ Yêu cầu hiểu về networking |
| ✅ Phù hợp CI/CD pipelines | ❗ Giao diện chưa thân thiện người mới |
| ✅ Parsing rất mạnh với Genie | ❗ Parsing tốt nhất khi dùng với thiết bị Cisco |
Nếu bạn làm việc trong môi trường mạng chuyên nghiệp, đặc biệt là với hạ tầng lớn hoặc môi trường cần kiểm thử liên tục, pyATS là lựa chọn số 1.