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

  • Ansible + Cisco NSO: Cặp bài trùng trong tự động hóa mạng hiện đại

    1. Tổng quan về Ansible trong NetDevOps


    Ansible là công cụ tự động hóa mã nguồn mở, được Red Hat mua lại vào năm 2015, và hiện nay được sử dụng rất rộng rãi trong NetDevOps.

    Một số ưu điểm nổi bật của Ansible:
    • Dễ học, dễ triển khai
    • Agentless (không cần cài agent trên thiết bị)
    • Hỗ trợ đa nền tảng (network device, server, cloud, VM…)

    Trong NetDevOps, Ansible thường được dùng để:
    • Tự động hóa cấu hình mạng
    • Thực thi workflow
    • Gọi API của các hệ thống khác

    Ansible thuộc nhóm Configuration Management, và khác với các công cụ Orchestration như Cisco Network Services Orchestrator (NSO).
    2. Configuration Management vs Orchestration

    🔹 Configuration Management


    Configuration management tập trung vào cấu hình thiết bị hoặc hệ thống riêng lẻ.

    Ví dụ:
    “Tôi muốn router A quảng bá mạng 192.0.2.0/24 bằng OSPF”



    → Đây là một tác vụ cấu hình cụ thể, phù hợp với Ansible.
    🔹 Orchestration


    Orchestration tập trung vào quản lý và phối hợp nhiều hệ thống để đạt được trạng thái mong muốn (desired state).

    Ví dụ:
    “Tôi muốn triển khai một VM ở Data Center A, áp dụng security policy B, và chỉ cho phép Dev network truy cập”



    → Trường hợp này cần phối hợp nhiều thành phần (network, security, compute), và phù hợp với Cisco NSO.

    👉 Nói ngắn gọn:
    • Configuration Management: cấu hình thiết bị
    • Orchestration: quản lý dịch vụ & trạng thái tổng thể

    3. Kết hợp Ansible và Cisco NSO


    Khi sử dụng Ansible + Cisco NSO cùng nhau:
    • Ansible đảm nhiệm workflow, automation, multidomain
    • Cisco NSO đảm nhiệm orchestration, transaction, rollback, đảm bảo desired state

    ➡ Đây là mô hình phổ biến trong NetDevOps hiện nay.
    4. Ansible Playbook và Module
    • Playbook: file YAML, mô tả thiết bị nào, làm gì, theo thứ tự nào
    • Module: thư viện (Python) giúp Ansible giao tiếp và thao tác với thiết bị/hệ thống

    Ansible hỗ trợ:
    • Module built-in
    • Module cộng đồng
    • Module tự viết

    Khi làm việc với NSO, Ansible cung cấp các module chuyên dụng.
    5. Các Ansible module dùng cho Cisco NSO

    🔹 nso_action
    • Dùng để thực thi NSO Action
    • Thường dùng để sync NSO CDB với thiết bị thật
    🔹 nso_config
    • Dùng để quản lý cấu hình hoặc service trong NSO
    • Có thể kiểm tra trạng thái in-sync / deep-in-sync

    6. Ví dụ: nso_action – Đồng bộ cấu hình (sync-to)

    🔸 Bài toán


    Cấu hình trong NSO CDB khác với cấu hình thực tế trên router → trạng thái out-of-sync 🔸 Playbook nso_sync.yaml

    - name: PUSH CONFIGS TO DEVICES WITH NSO_CONFIG
    hosts: "nso_server"
    gather_facts: no
    tasks:
    - name: ENSURE DEVICE IS IN SYNC
    nso_action:
    url: http://172.21.1.10:8080/jsonrpc
    username: "{{ ansible_user }}"
    password: "{{ ansible_password }}" path: /ncs:devices/device{"{{ item }}"}/sync-to
    with_items:
    - R1
    - R2
    - R3
    🔸 Ý nghĩa
    • sync-to: đẩy cấu hình từ NSO xuống router
    • Thực hiện cho R1, R2, R3
    • Sau khi chạy, trạng thái chuyển từ out-of-sync → in-sync

    7. nso_config – Đẩy cấu hình vào NSO

    🔸 Mô hình hoạt động
    1. Lấy cấu hình từ NSO (show running-config | display json)
    2. Convert JSON → YAML
    3. Dùng Ansible đẩy YAML vào NSO

    🔸 Playbook config_nso.yaml

    - name: LOAD CONFIG

    include_vars:

    file: "vars/{{ item }}.yaml"

    name: "{{ item }}_config"

    loop:

    - R1

    - R2

    - R3



    - name: PUSH CONFIG TO DEVICE

    nso_config:

    url: http://172.21.1.10:8080/jsonrpc

    username: "{{ ansible_user }}"

    password: "{{ ansible_password }}"

    data: "{{ item }}"

    loop:

    - "{{ R1_config }}"

    - "{{ R2_config }}"

    - "{{ R3_config }}"

    8. Ví dụ file cấu hình NSO (R1.yaml)

    tailf-ncs:devices:
    device:
    - name: R1
    config:
    tailf-ned-cisco-ios:hostname: R1
    tailf-ned-cisco-ios:version: "17.3"
    👉 Đây là cấu trúc NSO CDB, được convert từ JSON sang YAML bằng:
    • yq
    • Ansible filter

    9. Kết luận
    • Ansible: automation, workflow, configuration management
    • Cisco NSO: orchestration, transaction, desired state
    • nso_action: gọi action (sync-to, sync-from…)
    • nso_config: đẩy cấu hình/service vào NSO

    Kết hợp Ansible và NSO là mô hình chuẩn trong NetDevOps hiện đại.
Working...
X