Trong Ansible, hiểu đúng kiểu dữ liệu của variable giúp bạn viết playbook dễ đọc, ít lỗi và tái sử dụng tốt hơn.

Bài này đi nhanh qua 5 loại phổ biến nhất:

  • String
  • Number
  • Boolean
  • List
  • Dictionary

1) String variable

String là chuỗi ký tự. Bạn có thể khai báo trong playbook, inventory hoặc truyền từ command line.

vars:
  username: "admin"

Dùng trong task:

msg: "Current user is "

2) Number variable

Number có thể là integer hoặc float, dùng được cho tính toán.

vars:
  max_connections: 100
  cpu_threshold: 0.8

Ví dụ:

msg: "Allowed connections: "

3) Boolean variable

Boolean biểu diễn đúng/sai, hay dùng trong điều kiện when.

vars:
  debug_mode: true

Ví dụ:

- debug:
    msg: "Debug is enabled"
  when: debug_mode

Một số giá trị thường gặp:

  • Truthy: true, yes, on, 1
  • Falsy: false, no, off, 0

4) List variable

List là tập có thứ tự, chứa nhiều giá trị.

vars:
  packages:
    - nginx
    - curl
    - git

Dùng toàn bộ list:

msg: "Packages: "

Lấy phần tử theo index:

msg: "First package: "

5) Dictionary variable

Dictionary (map/object) là tập key-value.

vars:
  user:
    name: dat
    shell: /bin/bash

Truy cập theo key:

msg: "User  uses shell "

Bạn cũng có thể dùng bracket notation:

msg: "User "

6) Sơ đồ nhanh: chọn kiểu biến nào?

Need one text value?       -> String
Need numeric value?        -> Number
Need true/false switch?    -> Boolean
Need ordered collection?   -> List
Need structured key-value? -> Dictionary

7) Mẹo thực tế khi dùng variables trong Ansible

  • Dùng tên biến rõ nghĩa (db_port, api_timeout, enable_tls)
  • Tránh trộn kiểu dữ liệu cho cùng một biến
  • Ưu tiên cấu trúc dữ liệu (list/dict) khi playbook bắt đầu lớn
  • Khi dùng Jinja2, luôn kiểm tra key/index trước nếu dữ liệu có thể thiếu

Kết luận

Nắm chắc variable types giúp bạn:

  • viết playbook rõ ràng hơn
  • dễ debug hơn khi gặp lỗi template/condition
  • scale automation tốt hơn khi hệ thống nhiều host và nhiều env

Ở bài tiếp theo, bạn có thể đi sâu hơn vào variable precedence và cách merge variables theo host/group/env.