Site logo

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.