
Terraform là gì? Hướng dẫn Infrastructure as Code cho người mới
Terraform là công cụ Infrastructure as Code (IaC) mã nguồn mở của HashiCorp, cho phép bạn quản lý toàn bộ hạ tầng — máy chủ, mạng, database, DNS — bằng mã khai báo thay vì thao tác tay trên giao diện. Thay vì click từng nút trên AWS hay GCP, bạn viết file cấu hình, chạy một lệnh, và Terraform tự động tạo ra hoặc thay đổi hạ tầng đúng như mô tả.

Vì sao cần Infrastructure as Code?
Cách quản lý hạ tầng truyền thống — đăng nhập console, click tạo máy chủ — có nhiều vấn đề: khó tái lập, dễ sai sót, không ai biết hạ tầng hiện tại thực sự ra sao. Infrastructure as Code giải quyết triệt để bằng cách:
- Tái lập dễ dàng: Cùng một file cấu hình, tạo lại toàn bộ hạ tầng ở bất kỳ đâu, bất kỳ lúc nào.
- Version control: Cấu hình hạ tầng nằm trong Git, có lịch sử thay đổi, dễ review như code.
- Không sai sót thủ công: Máy làm theo đúng mô tả, không bỏ sót bước nào.
- Khai báo trạng thái mong muốn: Bạn mô tả “hạ tầng cần có”, Terraform tự tính toán sự khác biệt và thực hiện thay đổi.
HCL — ngôn ngữ cấu hình của Terraform
Terraform dùng ngôn ngữ riêng gọi là HCL (HashiCorp Configuration Language), lưu trong các file có đuôi .tf. Cú pháp khai báo rất dễ đọc, ví dụ tạo một máy chủ ảo:
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
Mỗi resource là một thành phần hạ tầng — máy chủ, mạng, database — với loại, tên và các thuộc tính. Terraform tự động tìm ra thứ tự tạo dựa trên quan hệ phụ thuộc giữa các resource.

Providers — cầu nối với nền tảng đám mây
Provider là plugin giúp Terraform giao tiếp với các nền tảng: AWS, Google Cloud, Azure, Kubernetes, Cloudflare, và hơn 1.000 dịch vụ khác trong Terraform Registry. Terraform Core nhận cấu hình, gửi qua provider plugin, provider gọi API của nền tảng đích — một kiến trúc cho phép quản lý hạ tầng đa đám mây bằng cùng một ngôn ngữ.
State — trái tim của Terraform
Terraform lưu trạng thái hạ tầng thực tế vào file terraform.tfstate. Mỗi lần chạy, Terraform so sánh state với cấu hình hiện tại để tính ra “plan” — danh sách những thứ cần tạo, sửa, xóa. Nhờ state, Terraform phát hiện được drift: ai đó thay đổi hạ tầng tay, Terraform sẽ báo và khôi phục đúng như cấu hình.
Trong môi trường sản xuất, file state được lưu ở nơi dùng chung như S3 kèm khóa DynamoDB để tránh xung đột khi nhiều người cùng chạy.
Modules — tái sử dụng cấu hình
Khi dự án lớn dần, bạn không muốn copy-paste hàng trăm dòng cấu hình. Module đóng gói một phần hạ tầng thành khối tái sử dụng — giống hàm hay thư viện trong lập trình. Ví dụ module VPC, module database, mỗi lần cần dùng chỉ cần khai báo:
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
name = "my-vpc"
cidr = "10.0.0.0/16"
}
Workflow cơ bản: Write – Plan – Apply
Quy trình làm việc chuẩn với Terraform chỉ gồm ba bước:
- Write: Viết file cấu hình
.tfmô tả hạ tầng mong muốn. - Plan: Chạy
terraform planđể xem bản xem trước những thay đổi sẽ diễn ra — an toàn, không tác động gì. - Apply: Chạy
terraform applyđể thực thi thay đổi thật sự.
Các lệnh quan trọng khác gồm terraform init (tải provider), terraform fmt (định dạng code), terraform validate (kiểm tra cú pháp) và terraform destroy (xóa toàn bộ hạ tầng).

Thực hành tốt khi dùng Terraform
Một số nguyên tắc giúp bạn dùng Terraform hiệu quả trong dự án thực tế. Thứ nhất, luôn lưu state ở nơi dùng chung (remote state) và kích hoạt khóa state để tránh hai người cùng thay đổi hạ tầng một lúc. Thứ hai, tách môi trường development, staging, production thành các workspace hoặc thư mục riêng, mỗi nơi có state riêng. Thứ ba, tổ chức cấu hình theo module với quy ước rõ ràng, đặt biến nhạy cảm vào biến môi trường thay vì viết trực tiếp trong file .tf. Cuối cùng, chạy terraform plan trong CI/CD và yêu cầu review trước khi apply — giống quy trình review code thông thường, giúp phát hiện sớm thay đổi sai sót trước khi chúng chạm vào hạ tầng thật.
Kết luận
Terraform đã trở thành tiêu chuẩn thực tế trong quản lý hạ tầng hiện đại, được dùng rộng rãi bởi các đội DevOps, SRE và cả developer cá nhân. Học Terraform không chỉ giúp bạn làm việc hiệu quả hơn với đám mây, mà còn mở ra cơ hội nghề nghiệp lớn trong kỷ nguyên hạ tầng định nghĩa bằng mã. Hãy bắt đầu bằng cách cài Terraform và tạo resource đầu tiên trên một nền tảng đám mây bất kỳ.
