Infrastructure as Code (IaC) là quản lý hạ tầng (máy chủ, mạng, DNS, cluster...) bằng file cấu hình được version-control, thay vì bấm tay trên console. Lợi ích: tái lập được, review qua pull request, có lịch sử thay đổi, dựng lại môi trường giống hệt.
Terraform và Ansible thường được so sánh nhưng nhắm hai việc hơi khác nhau:
- Terraform — provisioning, declarative. Bạn khai báo state mong muốn của tài nguyên (5 VM, 1 load balancer, 1 database). Terraform giữ một state file, tính ra khác biệt giữa hiện tại và mong muốn rồi tạo/sửa/xóa cho khớp. Idempotent tự nhiên: apply lại khi đã đúng thì không làm gì. Mạnh nhất ở việc tạo và quản lý vòng đời hạ tầng cloud.
- Ansible — configuration management, thiên procedural. Bạn viết playbook mô tả các bước để cấu hình một máy đã tồn tại: cài package, sửa file config, chạy service. Chạy qua SSH, không cần agent, không giữ state file. Mạnh nhất ở cấu hình bên trong máy và deploy ứng dụng.
Gộp lại: Terraform dựng ra hạ tầng, Ansible cấu hình những gì chạy trên đó. Nhiều team dùng cả hai — Terraform provision, rồi Ansible cấu hình — và cả hai đều là IaC.