Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Terraform hay Python – Đâu là lựa chọn tốt hơn để quản lý Cisco ACI APIC?

    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:
    • Tenant
    • VRF
    • Bridge Domain
    • Application Profile
    • EPG
    • Contracts
    Sau đó chạy:
    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 – Automation & Custom Logic
    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
    Python cho phép xây dựng bất kỳ workflow nào bạn mong muốn.
    Ư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
    So sánh nhanh
    Tiêu chí Terraform Python
    Triết lý Desired State Imperative
    Quản lý State Không
    Idempotent 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
    Khi nào nên dùng Terraform?
    • 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
    Muốn mọi thay đổi đều có thể kiểm soát
    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
    Vậy lựa chọn nào tốt hơn?
    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.
    Ví dụ:
    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ô.
    ​​​Click image for larger version

Name:	ChatGPT Image Jul 1, 2026, 09_26_45 AM (2).jpg
Views:	0
Size:	814.6 KB
ID:	442126​​
Working...
X