🔥 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ư:
🧪 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"
🧾 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ớ
🧠 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.
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.