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

  • Xây dựng Network Controller đơn giản bằng Python kết nối APIC-EM API


    Trong quản trị mạng truyền thống, kỹ sư thường đăng nhập thủ công vào từng thiết bị để kiểm tra trạng thái, cấu hình hoặc thu thập thông tin. Cách làm này phù hợp với hệ thống nhỏ, nhưng khi số lượng switch, router, access point tăng lên, việc quản lý thủ công sẽ tốn thời gian, dễ sai sót và khó tự động hóa.

    Vì vậy, mô hình Network Controller ra đời nhằm giúp quản trị viên có thể điều khiển, giám sát và thu thập thông tin mạng thông qua API. Trong bài viết này, mình giới thiệu một project Python nhỏ sử dụng python khai thái api từ network controller APIC-EM dùng để lấy danh sách thiết bị mạng thông qua REST API.

    1. Mục tiêu của project

    Project này được xây dựng với mục tiêu giúp người học hiểu cách Python có thể giao tiếp với hệ thống quản trị mạng thông qua API.

    Các nội dung chính mà project thể hiện gồm:
    • Gửi request xác thực đến controller.
    • Nhận về service ticket/token.
    • Dùng ticket đó để gọi API lấy danh sách thiết bị mạng.
    • Hiển thị dữ liệu trả về dưới dạng JSON dễ đọc.
    • Làm quen với tư duy Network Automation.

    Nói đơn giản, thay vì vào giao diện web của controller để xem thiết bị, ta có thể viết script Python để lấy thông tin tự động.

    2. Công nghệ sử dụng

    Project sử dụng các thành phần khá cơ bản:
    • Python: ngôn ngữ chính để viết script.
    • requests: thư viện dùng để gửi HTTP request.
    • JSON: định dạng dữ liệu trao đổi giữa Python và controller.
    • REST API: cơ chế giao tiếp với APIC-EM.
    • APIC-EM Controller: hệ thống quản lý mạng tập trung.

    Đây là một ví dụ phù hợp cho người mới học Network Automation vì code ngắn, dễ đọc và thể hiện rõ luồng xử lý API.

    3. Luồng hoạt động của chương trình

    Chương trình hoạt động theo 3 bước chính:

    Bước 1: Gửi thông tin đăng nhập

    Script gửi username và password đến API:

    /api/v1/ticket

    Mục đích của bước này là xác thực với controller. Nếu đăng nhập thành công, controller sẽ trả về một service ticket.

    Bước 2: Nhận service ticket

    Service ticket đóng vai trò giống như token phiên làm việc.

    Sau khi có ticket, script sẽ dùng nó trong header X-Auth-Token để gọi các API khác.

    Bước 3: Lấy danh sách thiết bị mạng


    Sau khi có token, script tiếp tục gọi API:

    /api/v1/network-device

    API này trả về thông tin các thiết bị mạng đang được controller quản lý.Dữ liệu trả về được in ra màn hình dưới dạng JSON.

    4. Cấu trúc code chính

    Trong file này có hai hàm chính:

    Hàm get_ticket()

    Hàm này gửi request POST đến controller để lấy service ticket.

    Nhiệm vụ chính:
    • Khai báo URL xác thực.
    • Khai báo header Content-Type: application/json.
    • Gửi username và password.
    • Nhận response từ controller.
    • Trả về serviceTicket.
    Hàm get_device()


    Hàm này dùng service ticket để gọi API lấy danh sách thiết bị.

    Nhiệm vụ chính:
    • Gọi lại hàm get_ticket() để lấy token.
    • Gửi request GET đến API /network-device.
    • Đính kèm token vào header X-Auth-Token.
    • Trả về danh sách thiết bị trong phần response.
    5. Giá trị học tập

    Thông qua project này, người học có thể nắm được:
    • Cách dùng Python để gọi REST API.
    • Cách gửi request POST và GET.
    • Cách truyền dữ liệu JSON trong request body.
    • Cách dùng token để xác thực API.
    • Cách đọc dữ liệu JSON trả về từ hệ thống mạng.
    • Cách tư duy tự động hóa trong quản trị hệ thống mạng.

    Đây là nền tảng quan trọng trước khi học sâu hơn về các công nghệ như Cisco DNA Center API, Ansible Network Automation, Netmiko, Nornir hoặc tích hợp giám sát với Prometheus/Grafana.

    Source code tham khảo: https://github.com/vominhduong/pytho...er_APIC_EM.git



    ​​
    Attached Files
    Last edited by vominhduong2005; 3 hours ago.
Working...
X