🔧 Pyang – Công cụ không thể thiếu khi làm việc với YANG & Network Automation
Trong hệ sinh thái Model-Driven Programmability (NETCONF/RESTCONF), việc hiểu và kiểm tra YANG data model là một kỹ năng nền tảng. Và đây chính là lúc Pyang phát huy vai trò của nó.
📌 Pyang là gì?
Pyang là một công cụ:
👉 Nói cách khác:
Pyang giúp kỹ sư mạng đọc – hiểu – kiểm tra – visualize data model trước khi đưa vào automation hoặc production.
🧠 Vì sao Pyang quan trọng với Network Engineer?
Trong môi trường hiện đại:
➡️ Nếu không hiểu YANG model:
👉 Pyang giúp bạn “nhìn thấy cấu trúc dữ liệu” một cách rõ ràng.
🔍 Ví dụ thực tế với OpenConfig Interfaces
Lệnh:
pyang -f tree openconfig-interfaces.yang
Output sẽ hiển thị cấu trúc dạng cây:
module: openconfig-interfaces
+--rw interfaces
+--rw interface* [name]
+--rw name -> ../config/name
+--rw config
| +--rw name? string
| +--rw type identityref
| +--rw mtu? uint16
| +--rw loopback-mode? boolean
| +--rw description? string
| +--rw enabled? boolean
+--ro state
+--ro name? string
+--ro type identityref
+--ro mtu? uint16
+--ro loopback-mode? boolean
+--ro description? string
+--ro enabled? boolean
+--ro ifindex? uint32
+--ro admin-status enumeration
🧩 Phân tích cấu trúc YANG (rất quan trọng)
1. Module
2. Container
👉 Đây là root của toàn bộ cấu hình interface
3. List
👉 Tương đương:
"interfaces": {
"interface": [
{ "name": "Gig0/0" },
{ "name": "Gig0/1" }
]
}
4. Leaf (node đơn lẻ)
Ví dụ:
+--rw mtu? uint16
👉 Đây là nơi bạn thực sự cấu hình giá trị
5. Config vs State (cực kỳ quan trọng trong automation)
+--rw config
+--ro state
👉 Đây chính là cách phân biệt:
6. Kiểu dữ liệu nâng cao
🚀 Ứng dụng thực tế
Pyang thường được dùng trong: ✅ Network Automation
💡 Tips thực chiến (CCIE/DevNet level)
🔗 Tham khảo
🎯 Kết luận
Pyang không chỉ là một tool “nice-to-have”, mà là:
Trong thế giới:
👉 Hiểu YANG = hiểu cách network vận hành ở tầng data
Trong hệ sinh thái Model-Driven Programmability (NETCONF/RESTCONF), việc hiểu và kiểm tra YANG data model là một kỹ năng nền tảng. Và đây chính là lúc Pyang phát huy vai trò của nó.
📌 Pyang là gì?
Pyang là một công cụ:
- Dùng để validate (kiểm tra tính hợp lệ) của YANG model
- Tuân theo các chuẩn RFC 6020 / RFC 7950
- Có khả năng mở rộng thông qua plugin
- Hỗ trợ chuyển đổi YANG sang nhiều định dạng khác nhau
👉 Nói cách khác:
Pyang giúp kỹ sư mạng đọc – hiểu – kiểm tra – visualize data model trước khi đưa vào automation hoặc production.
🧠 Vì sao Pyang quan trọng với Network Engineer?
Trong môi trường hiện đại:
- CLI → dần bị thay thế bởi API + Data Model
- Cấu hình không còn là command line → mà là structured data (JSON/XML/YANG)
➡️ Nếu không hiểu YANG model:
- Bạn không thể viết automation đúng
- Không hiểu API trả về cái gì
- Debug rất khó
👉 Pyang giúp bạn “nhìn thấy cấu trúc dữ liệu” một cách rõ ràng.
🔍 Ví dụ thực tế với OpenConfig Interfaces
Lệnh:
pyang -f tree openconfig-interfaces.yang
Output sẽ hiển thị cấu trúc dạng cây:
module: openconfig-interfaces
+--rw interfaces
+--rw interface* [name]
+--rw name -> ../config/name
+--rw config
| +--rw name? string
| +--rw type identityref
| +--rw mtu? uint16
| +--rw loopback-mode? boolean
| +--rw description? string
| +--rw enabled? boolean
+--ro state
+--ro name? string
+--ro type identityref
+--ro mtu? uint16
+--ro loopback-mode? boolean
+--ro description? string
+--ro enabled? boolean
+--ro ifindex? uint32
+--ro admin-status enumeration
🧩 Phân tích cấu trúc YANG (rất quan trọng)
1. Module
- Đây là top-level container
- Ví dụ:
module: openconfig-interfaces - Tương đương với một namespace của model
2. Container
- Nhóm các node liên quan lại với nhau
- Ví dụ:
+--rw interfaces
👉 Đây là root của toàn bộ cấu hình interface
3. List
- Đại diện cho một danh sách các object
- Ví dụ:
+--rw interface* [name] - * → có nhiều entry
- [name] → key của list
👉 Tương đương:
"interfaces": {
"interface": [
{ "name": "Gig0/0" },
{ "name": "Gig0/1" }
]
}
4. Leaf (node đơn lẻ)
Ví dụ:
+--rw mtu? uint16
- leaf chứa 1 giá trị
- ? → optional
- uint16 → kiểu dữ liệu
👉 Đây là nơi bạn thực sự cấu hình giá trị
5. Config vs State (cực kỳ quan trọng trong automation)
+--rw config
+--ro state
- config → dữ liệu có thể cấu hình (write)
- state → dữ liệu read-only (telemetry/operational)
👉 Đây chính là cách phân biệt:
| config | gửi qua API để cấu hình |
| state | lấy từ device để monitoring |
6. Kiểu dữ liệu nâng cao
- identityref → tham chiếu đến identity (thường dùng cho type interface)
- enumeration → giá trị cố định (up/down)
- boolean → true/false
🚀 Ứng dụng thực tế
Pyang thường được dùng trong: ✅ Network Automation
- Viết script với NETCONF / RESTCONF
- Hiểu payload trước khi gửi API
- Validate model trước khi deploy
- Generate documentation tự động
- Debug sai cấu trúc JSON/XML
- So sánh model giữa vendor (Cisco vs OpenConfig)
💡 Tips thực chiến (CCIE/DevNet level)
- Luôn dùng:
pyang -f tree
→ để hiểu nhanh model - Kết hợp với:
pyang -f json
pyang -f yang
→ để convert format - Khi làm với Cisco:
- So sánh giữa:
- native YANG
- OpenConfig YANG
- So sánh giữa:
- Khi viết API:
- Luôn mapping:
YANG → JSON payload → API call
- Luôn mapping:
🔗 Tham khảo
🎯 Kết luận
Pyang không chỉ là một tool “nice-to-have”, mà là:
🔥 Công cụ bắt buộc nếu bạn muốn chuyển từ Network Engineer → Network Automation Engineer
Trong thế giới:
- API-driven
- Infrastructure as Code
- Intent-based networking
👉 Hiểu YANG = hiểu cách network vận hành ở tầng data