🚀 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:
Đâ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:
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:
📦 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:
🧪 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?
👉 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é!
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é!