Inventory Format
Khi bắt đầu với Ansible inventory, câu hỏi hay gặp là:
Nên dùng INI hay YAML?
Câu trả lời ngắn gọn: tùy độ phức tạp hệ thống của bạn.
1) Hình dung bằng ví dụ startup vs tập đoàn
- Startup nhỏ (ít server): inventory INI thường là đủ
- Doanh nghiệp lớn (nhiều region, nhiều team): YAML dễ quản trị hơn
Small Startup Large Enterprise
------------- -----------------
Few servers Hundreds of servers
Simple grouping Multi-level grouping
(web + db) (role + region + env + team)
=> INI is often enough => YAML is usually better
2) INI inventory: đơn giản, dễ bắt đầu
INI phù hợp khi bạn muốn viết nhanh, nhìn nhanh.
Ví dụ:
[web]
web-1 ansible_host=10.0.1.11
web-2 ansible_host=10.0.1.12
[db]
db-1 ansible_host=10.0.2.21
Điểm mạnh
- Cú pháp ngắn
- Dễ học cho người mới
- Hợp với lab/project nhỏ
Điểm hạn chế
- Khi cây group phức tạp, file khó đọc hơn
- Khó biểu diễn cấu trúc lồng nhau rõ ràng
3) YAML inventory: có cấu trúc, scale tốt
YAML phù hợp khi inventory lớn, nhiều nhóm và nhiều biến.
Ví dụ:
all:
children:
web:
hosts:
web-1:
ansible_host: 10.0.1.11
web-2:
ansible_host: 10.0.1.12
db:
hosts:
db-1:
ansible_host: 10.0.2.21
Bạn cũng có thể tổ chức theo region/team/env rõ hơn:
all
└── children
├── prod
│ ├── asia
│ └── europe
└── staging
├── web
└── db
Điểm mạnh
- Cấu trúc rõ ràng, dễ đọc khi hệ thống lớn
- Dễ mở rộng cho hierarchy nhiều tầng
- Thuận lợi khi review/maintain theo team
Điểm hạn chế
- Dài hơn INI
- Người mới cần chú ý indentation
4) Nên chọn format nào?
Bạn có thể dùng checklist này:
- Dưới ~20 host, ít group: bắt đầu bằng INI
- Nhiều role + nhiều region + nhiều environment: chuyển sang YAML
- Team nhiều người cùng maintain inventory: ưu tiên YAML
Complexity low -> INI
Complexity high -> YAML
5) Gợi ý thực tế cho team
- Không cần “chuẩn tuyệt đối” từ ngày đầu
- Bắt đầu với format đơn giản, rồi nâng cấp khi quy mô tăng
- Dù chọn INI hay YAML, mục tiêu vẫn là:
- host/group rõ ràng
- naming nhất quán
- dễ kiểm soát khi automation chạy diện rộng
Kết luận
Ansible hỗ trợ cả INI và YAML vì mỗi team có bối cảnh khác nhau.
- INI: nhanh, gọn, hợp hệ thống nhỏ
- YAML: có cấu trúc, hợp hệ thống lớn/phức tạp
Chọn format đúng sẽ giúp inventory trở thành tài sản dễ mở rộng, thay vì thành “nút thắt” khi hệ thống phát triển.