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

  • Pyang

    🔧 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ụ:
    • 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
    ✅ DevNet / NetDevOps
    • Validate model trước khi deploy
    • Generate documentation tự động
    ✅ Troubleshooting
    • 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
    • Khi viết API:
      • Luôn mapping:
        YANG → JSON payload → API call

    🔗 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
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

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