Khi bắt đầu tự động hóa hạ tầng Cisco ACI, hầu hết mọi người sẽ đứng trước câu hỏi:
Nên sử dụng Terraform hay Python để tương tác với APIC?
Thực tế, cả hai đều có thể tạo Tenant, VRF, Bridge Domain, EPG, Contract, Application Profile... thông qua API của APIC. Tuy nhiên, cách tiếp cận và mục tiêu của chúng hoàn toàn khác nhau.
Terraform – Infrastructure as Code (IaC)
Terraform hoạt động theo mô hình Desired State (khai báo trạng thái mong muốn).
Bạn chỉ cần mô tả hạ tầng bằng code:
terraform init
terraform plan
terraform apply
Terraform sẽ tự tính toán sự khác biệt giữa cấu hình hiện tại trên APIC và cấu hình mong muốn, rồi chỉ thực hiện những thay đổi cần thiết.
Ưu điểm
Infrastructure as Code
Có khả năng quản lý trạng thái (State)
Idempotent (chạy nhiều lần không tạo tài nguyên trùng)
Dễ tích hợp CI/CD
Có thể review thay đổi trước khi apply bằng terraform plan
Rollback và quản lý version dễ dàng thông qua Git
Nhược điểm
Python không quản lý trạng thái.
Thay vào đó, Python gửi trực tiếp các REST API đến APIC.
Ví dụ:
Login APIC
↓
Lấy Token
↓
POST Tenant
↓
POST VRF
↓
POST Bridge Domain
↓
POST EPG
↓
Attach Physical Domain
↓
Deploy Policy
Bạn có thể sử dụng:
Ưu điểm
Linh hoạt gần như tuyệt đối
Có thể tích hợp Database
Đọc Excel
Import CSV
Sinh cấu hình hàng loạt
Kết nối ServiceNow
Tích hợp NetBox
Gọi API từ nhiều hệ thống khác nhau
Xử lý Exception theo ý muốn
Nhược điểm
Khi nào nên dùng Terraform?
Khi nào nên dùng Python?
Thực tế, Terraform và Python không cạnh tranh mà bổ sung cho nhau.
Một mô hình phổ biến là:
User nhập thông tin
↓
Python xử lý dữ liệu và kiểm tra điều kiện
↓
Sinh file Terraform
↓
terraform plan
↓
terraform apply
↓
Cisco APIC
Cách tiếp cận này kết hợp được sự linh hoạt của Python với khả năng quản lý trạng thái và tính nhất quán của Terraform, giúp triển khai hạ tầng ACI an toàn, dễ kiểm soát và thuận lợi khi mở rộng quy mô.
Nên sử dụng Terraform hay Python để tương tác với APIC?
Thực tế, cả hai đều có thể tạo Tenant, VRF, Bridge Domain, EPG, Contract, Application Profile... thông qua API của APIC. Tuy nhiên, cách tiếp cận và mục tiêu của chúng hoàn toàn khác nhau.
Terraform – Infrastructure as Code (IaC)
Terraform hoạt động theo mô hình Desired State (khai báo trạng thái mong muốn).
Bạn chỉ cần mô tả hạ tầng bằng code:
- Tenant
- VRF
- Bridge Domain
- Application Profile
- EPG
- Contracts
terraform init
terraform plan
terraform apply
Terraform sẽ tự tính toán sự khác biệt giữa cấu hình hiện tại trên APIC và cấu hình mong muốn, rồi chỉ thực hiện những thay đổi cần thiết.
Ưu điểm
Infrastructure as Code
Có khả năng quản lý trạng thái (State)
Idempotent (chạy nhiều lần không tạo tài nguyên trùng)
Dễ tích hợp CI/CD
Có thể review thay đổi trước khi apply bằng terraform plan
Rollback và quản lý version dễ dàng thông qua Git
Nhược điểm
- Chưa linh hoạt với các logic phức tạp
- Khó xử lý workflow nhiều điều kiện
- Phụ thuộc vào Provider hỗ trợ
Python không quản lý trạng thái.
Thay vào đó, Python gửi trực tiếp các REST API đến APIC.
Ví dụ:
Login APIC
↓
Lấy Token
↓
POST Tenant
↓
POST VRF
↓
POST Bridge Domain
↓
POST EPG
↓
Attach Physical Domain
↓
Deploy Policy
Bạn có thể sử dụng:
- requests
- acitoolkit
- Cobra SDK
- Cisco SDK
Ưu điểm
Linh hoạt gần như tuyệt đối
Có thể tích hợp Database
Đọc Excel
Import CSV
Sinh cấu hình hàng loạt
Kết nối ServiceNow
Tích hợp NetBox
Gọi API từ nhiều hệ thống khác nhau
Xử lý Exception theo ý muốn
Nhược điểm
- Phải tự quản lý trạng thái nếu cần
- Dễ phát sinh tài nguyên trùng nếu không kiểm tra
- Khó review thay đổi trước khi chạy
- Cần nhiều code hơn
| Tiêu chí | Terraform | Python |
| Triết lý | Desired State | Imperative |
| Quản lý State | Có | Không |
| Idempotent | Có | Phải tự xây dựng |
| REST API | Thông qua Provider | Gọi trực tiếp |
| Logic phức tạp | Hạn chế | Rất mạnh |
| CI/CD | Rất phù hợp | Phù hợp |
| Dễ đọc | Cao | Phụ thuộc code |
| Quản lý hàng nghìn object | Rất tốt | Tốt nếu thiết kế đúng |
- Triển khai hạ tầng ACI mới
- Chuẩn hóa cấu hình
- Quản lý nhiều Tenant
- Đồng bộ cấu hình giữa nhiều Fabric
- GitOps
- CI/CD
Khi nào nên dùng Python?
- Tự động onboarding khách hàng
- Đọc dữ liệu từ Excel hoặc Database
- Sinh hàng nghìn EPG theo template
- Đồng bộ với CMDB
- Workflow nhiều bước
- Kiểm tra điều kiện trước khi triển khai
- Xây dựng Portal tự động hóa
Thực tế, Terraform và Python không cạnh tranh mà bổ sung cho nhau.
Một mô hình phổ biến là:
- Terraform chịu trách nhiệm quản lý hạ tầng ACI theo mô hình Infrastructure as Code.
- Python xử lý các nghiệp vụ động như đọc dữ liệu, tạo template, tích hợp với các hệ thống khác, hoặc thực hiện các quy trình có nhiều điều kiện.
User nhập thông tin
↓
Python xử lý dữ liệu và kiểm tra điều kiện
↓
Sinh file Terraform
↓
terraform plan
↓
terraform apply
↓
Cisco APIC
Cách tiếp cận này kết hợp được sự linh hoạt của Python với khả năng quản lý trạng thái và tính nhất quán của Terraform, giúp triển khai hạ tầng ACI an toàn, dễ kiểm soát và thuận lợi khi mở rộng quy mô.