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

  • Bài 2: NXAPI

    🚀 Chương 2: NX-API – “Cây cầu thần kỳ” từ CLI đến Automation

    Bạn từng ước gì có thể “gõ CLI” từ xa mà không cần SSH vào thiết bị? Hay viết code để lấy output show interface rồi phân tích JSON trả về? Cisco NX-API chính là công cụ kỳ diệu giúp bạn biến CLI thành RESTful API một cách dễ dàng.
    🧠 NX-API là gì?


    NX-API là giao diện lập trình ứng dụng tích hợp sẵn trong các thiết bị Cisco Nexus chạy NX-OS, cho phép bạn:
    • Gửi các lệnh CLI qua HTTP/HTTPS
    • Nhận lại kết quả dưới dạng JSON hoặc XML
    • Tự động hóa các tác vụ vận hành và cấu hình mà không cần login SSH

    Đây là giải pháp rất lý tưởng cho những ai quen với CLI nhưng muốn nhúng chúng vào script Python, Ansible hoặc ứng dụng dashboard.
    ⚙️ Bật NX-API trên Switch Nexus


    Chỉ với một dòng lệnh CLI:

    conf t
    feature nxapi



    Là xong! NX-API sử dụng port HTTPS mặc định, thường là https://<switch-ip>/ins.
    ✨ Cách hoạt động của NX-API


    Cú pháp một request tiêu chuẩn gồm:
    • URL: https://<switch-ip>/ins
    • Phương thức HTTP: POST
    • Header: Content-Type: application/json
    • Auth: Dạng basic hoặc token
    • Body: JSON chứa CLI bạn muốn thực thi

    Ví dụ: Gửi lệnh show version bằng Python

    import requests
    import json
    url = "https://10.10.20.1/ins"
    switchuser = "admin"
    switchpassword = "cisco123"
    myheaders = {'content-type': 'application/json'}
    payload = { "ins_api": { "version": "1.0", "type": "cli_show", "chunk": "0", "sid": "1", "input": "show version", "output_format": "json" } }
    response = requests.post(url, data=json.dumps(payload), headers=myheaders, auth=(switchuser, switchpassword), verify=False)
    print(response.json())



    🔍 Giải thích:
    • type: cli_show để gọi lệnh dạng show
    • input: lệnh bạn muốn gửi
    • output_format: json hoặc xml

    📦 Output trả về dạng JSON


    NX-API trả về kết quả CLI dưới dạng JSON. Bạn dễ dàng xử lý, phân tích hoặc lưu log với Pandas hoặc lưu vào database.

    { "ins_api": { "outputs": { "output": { "body": { "kickstart_ver_str": "7.0(3)I7(1)", "uptime": "2 days, 4 hours", ... } } } } }



    Với cấu trúc này, bạn có thể trích xuất chi tiết như version, uptime, serial number, v.v… một cách dễ dàng.
    🛠️ NX-API CLI Config vs. RESTful


    Ngoài việc gọi cli_show, bạn có thể sử dụng cli_conf để gửi nhiều lệnh cấu hình.

    "input": "conf t ; interface eth1/1 ; description LINK_TO_CORE"



    Tuy nhiên, đây vẫn là "CLI thông qua API", chưa thực sự RESTful.
    🌐 NX-API REST – bước tiến hóa tự nhiên


    Nếu bạn đã quen với RESTCONF, bạn sẽ yêu NX-API REST:
    • Tương tác với các đối tượng MIT (Management Information Tree) như URI
    • Gửi yêu cầu GET, POST, DELETE chuẩn REST
    • Sử dụng JSON hoặc XML
    • Có thể filter, query, paginate dữ liệu

    🧪 Ví dụ gọi API NX-API REST

    POST https://10.10.20.1/api/mo/aaaLogin.json { "aaaUser": { "attributes": { "name": "admin", "pwd": "cisco123" } } }



    ✅ Sau khi login, bạn sẽ nhận được token APIC-cookie, dùng trong các request tiếp theo.

    Tạo một cấu hình interface mới:


    POST https://10.10.20.1/api/mo/sys/intf.json Cookie: APIC-cookie=K5Uojmg1XjqXJSRlN6AaVxUnJ= { "interfaceEntity": { "children": [ { "l1PhysIf": { "attributes": { "id": "eth1/2", "mode": "trunk", "trunkVlans": "100-110" } } } ] } }
    💡 NX-API vs NX-API REST – nên dùng khi nào?
    Nhanh, đơn giản, dễ dùng Chuẩn REST, dễ tích hợp
    Phù hợp người biết CLI Phù hợp lập trình viên
    Dựa trên lệnh Dựa trên mô hình dữ liệu





    👉 Dùng NX-API CLI nếu bạn muốn nhanh gọn, quen CLI.
    👉 Dùng NX-API REST nếu bạn xây hệ thống tích hợp API chuẩn.


    🎓 Kết luận

    NX-API là cây cầu giữa thế giới CLI truyền thống và thế giới tự động hóa hiện đại. Nó giúp bạn chuyển hóa kiến thức CLI thành các script API-ready, mở đường đến Ansible, Terraform, hoặc các platform orchestration như NSO.

    📣 Bạn đã dùng NX-API chưa? Hay vẫn SSH và “copy paste lệnh” thủ công? Comment câu chuyện của bạn bên dưới để mình hỗ trợ thêm nhé!


    Attached Files
    Đặng Quang Minh, CCIEx2#11897 (Enterprise Infrastructure, Wireless), DEVNET, CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X