Ansible Variables, Facts và Registers: Hướng dẫn sử dụng biến và thu thập thông tin hệ thống
5:00 read
Ansible Variables, Facts & Registers — Hiểu đúng và thực hành hiệu quả
Trong Playbook, bạn sẽ thường xuyên cần truyền dữ liệu, lấy thông tin từ hệ thống, hoặc lưu kết quả của một tác vụ. Ba khái niệm quan trọng hỗ trợ việc này chính là:
| Thành phần | Mục đích |
|---|---|
| Variables | Lưu giá trị để tái sử dụng |
| Facts | Thu thập thông tin hệ thống máy chủ |
| Registers | Lưu kết quả trả về của một task |
Hiểu rõ 3 thành phần này sẽ giúp Playbook linh hoạt, dễ bảo trì và tự động hóa cao hơn.
Variables (Biến)
Dùng làm gì?
- Tái sử dụng giá trị (tên package, port, user…)
- Dễ thay đổi theo môi trường (dev, staging, prod)
- Giảm trùng lặp Playbook
Cách khai báo biến
📌 Khai báo trực tiếp trong Playbook:
vars:
app_port: 8080
package_name: nginx
📌 Gọi biến trong task:
- name: Cài đặt package
apt:
name: "{{ package_name }}"
state: present
📌 Khai báo biến qua file riêng:
group_vars/webservers.yml
📌 Khai báo khi chạy Playbook:
ansible-playbook deploy.yml -e "app_port=8080"
📌 Biến fact có thể gọi bằng syntax:
{{ ansible_facts['hostname'] }}
Facts (Thông tin hệ thống)
Facts là gì?
Facts là dữ liệu mà Ansible tự động thu thập từ máy chủ trước khi chạy task, ví dụ:
- IP, hostname
- OS, kernel
- CPU, RAM, Disk
- Network interfaces
☑ Lấy danh sách facts của server
ansible web -m setup
📌 Ví dụ dùng facts trong Playbook
- name: In ra thông tin hệ điều hành
debug:
msg: "Server đang chạy: {{ ansible_facts['distribution'] }} {{ ansible_facts['distribution_version'] }}"
🔕 Tắt việc thu thập facts (nếu không cần)
- hosts: all
gather_facts: no
Yêu cầu đăng nhập
Vui lòng đăng nhập để truy cập nội dung này
Additional Resources
Course Guide
Comprehensive PDF guide with examples
GitHub Repository
Example code for all lessons
Discussion
Have a question about this lesson? Post it here and get answers from instructors and peers.
