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

  • 🔥 Góc Hiểu Sâu Ansible - GATHER FACTS từ thiết bị mạng Cisco 🔥

    🔥 Góc Hiểu Sâu Ansible - GATHER FACTS từ thiết bị mạng Cisco 🔥
    Dành cho anh em DevNet, DevOps, NetEngineer đang dùng Ansible quản lý thiết bị mạng
    🧠 Bạn có biết?
    Khi nói đến tự động hóa, hầu hết mọi người chỉ nghĩ đến việc cấu hình thiết bị (config). Nhưng thực tế, Ansible còn có khả năng thu thập dữ liệu chi tiết từ thiết bị mạng – được gọi là Facts Gathering.
    Việc thu thập này không chỉ giúp kiểm tra tình trạng hiện tại của thiết bị mà còn cực kỳ quan trọng để thực hiện các cấu hình conditional dựa trên thông tin hiện có, như version, hostname, interface…
    🛠️ Module ios_facts - Công cụ thu thập dữ liệu hạ tầng

    Ansible cung cấp module ios_facts để thu thập thông tin từ thiết bị chạy Cisco IOS (hoặc các dòng tương thích). Khi chạy, module này sẽ thu thập một loạt các thông tin và gắn nhãn chúng với tiền tố ansible_net_ như:
    • ansible_net_hostname
    • ansible_net_version
    • ansible_net_interfaces
    • ansible_net_model

    🧪 Một vài ví dụ thực chiến:

    - name: GATHER ALL FACTS ios_facts: gather_subset: all - name: GATHER EVERYTHING EXCEPT FOR HARDWARE ios_facts: gather_subset: "!hardware" - name: ONLY GATHER INTERFACES ios_facts: gather_subset: "interfaces"
    ⚡ Mặc định là !config, tức là nó sẽ bỏ qua phần cấu hình đang chạy (running-config) để tăng tốc độ thu thập.

    🧾 Cách xem dữ liệu thu thập được?

    Có 2 cách phổ biến:
    Cách 1: Dùng debug trực tiếp với tên biến

    - name: ACCESS FACTS VARIABLES debug: var: ansible_net_version

    Cách 2: Dùng register để lưu kết quả JSON

    - name: GATHER ALL FACTS AND SAVE ios_facts: register: device_facts - name: DEBUG RAW JSON debug: var: device_facts

    🧩 Điều quan trọng cần nhớ
    • Mọi module trong Ansible đều trả về kết quả ở dạng JSON, bạn có thể dễ dàng xử lý lại với Jinja2.
    • Không cần register để dùng facts, vì Ansible đã tự lưu trong ansible_facts cho bạn rồi.
    • Các biến ansible_net_* có thể truy cập trực tiếp mà không cần vòng qua cấu trúc ios_facts['ansible_facts']['ansible_net_version'].

    🧠 Kiến thức ôn tập:

    💡 Hai cách để xem các facts trả về là gì?
    ✔️ Dùng debug để in trực tiếp biến như ansible_net_version
    ✔️ Dùng register rồi debug để xem toàn bộ cấu trúc JSON trả về
    ❌ Không có biến nào tên facts hay ios_facts là dictionary trực tiếp trong playbook – đừng nhầm nhé!
    💬 Kết

    Facts không chỉ để “nhìn cho biết”, mà còn giúp bạn ra quyết định thông minh khi viết playbook. Từ kiểm tra version IOS, đến kiểm tra hostname hoặc số interface – mọi thứ đều có thể tự động nếu bạn nắm vững ios_facts.
    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