
Terraform là gì? Infrastructure as Code cho cloud đa nền tảng
Terraform là công cụ Infrastructure as Code (IaC) mã nguồn mở được phát triển bởi HashiCorp. Nó cho phép bạn định nghĩa, cung cấp và quản lý hạ tầng cloud thông qua mã khai báo thay vì thao tác thủ công trên giao diện web.
Thay vì nhấp vào AWS Console, Azure Portal hoặc GCP UI để tạo máy ảo, mạng VPC, bucket S3, bạn viết file .tf mô tả tài nguyên cần có. Terraform sẽ tự động so sánh trạng thái hiện tại với trạng thái mong muốn và thực hiện các thao tác cần thiết để đưa hạ tầng về trạng thái đích.

Nguồn: HashiCorp Terraform docs
Tại sao nên dùng Terraform
Terraform giải quyết bài toán “drift” – khi hạ tầng thực tế khác với tài liệu hoặc ý định ban đầu. Các lợi ích chính bao gồm:
- Khả năng lặp lại: Một cùng tập mã có thể triển khai môi trường dev, staging và production đồng nhất.
- Version control: Mã hạ tầng được lưu trên Git, cho phép xem lịch sử thay đổi và rollback an toàn.
- Đa nền tảng: Hỗ trợ hơn 100 provider bao gồm AWS, Azure, GCP, Kubernetes, Docker, và thậm chí là DNS, GitHub, v.v.
- Lên kế hoạch trước khi thực thi: Lệnh
terraform plancho thấy chính xác những gì sẽ thay đổi trước khi áp dụng. - Hợp tác nhóm: Nhiều engineer có thể làm việc trên cùng một mã hạ tầng thông qua CI/CD pipeline.

Cách hoạt động cơ bản
Terraform hoạt động theo ba bước chính:
- Init:
terraform inittải xuống provider plugins cần thiết. - Plan:
terraform planso sánh và tạo ra kế hoạch thay đổi. - Apply:
terraform applythực thi kế hoạch để đạt trạng thái mong muốn.
Mỗi provider định nghĩa các resource (tài nguyên) và data source. Ví dụ, với AWS provider, bạn có thể định nghĩa aws_instance, aws_s3_bucket, aws_security_group, và Terraform sẽ hiểu cách tạo, cập nhật, hoặc xóa chúng qua AWS API. Chi tiết tại AWS Provider docs.

Nguồn: Terraform Language docs
Quản lý state với Terraform
Terraform lưu trữ trạng thái thực tế của hạ tầng trong file terraform.tfstate. File này là “single source of truth” giúp Terraform biết những gì đã được tạo ra trước đó. Trong môi trường team, bạn nên lưu state file từ xa thông qua backend như S3 + DynamoDB lock, hoặc Terraform Cloud. Điều này ngăn chặn xung đột khi hai engineer chạy apply đồng thời.
State chứa thông tin nhạy cảm như password, key pair, IP nội bộ. Bật mã hóa state file, tránh commit state lên Git công khai. Một số địa chỉ leak state file đã bị lộ credential và bị khai thác nặng nề. Tham khảo chi tiết tại Terraform State docs.
Terraform Modules: Tái sử dụng mã hạ tầng
Module là cách Terraform nhóm mã thành thành phần tái sử dụng. Thay vì sao chép mã VPC qua lại, bạn viết một module VPC với input (vpc_id, subnet_cidr) và output (public_subnet_ids, private_subnet_ids). Module được lưu trên registry, GitHub, hoặc thư mục modules trong dự án.
Module giúp tiêu chuẩn hóa practice giữa các team: đảm bảo mọi VPC đều có tag chuẩn, flow log được bật, và CIDR không chồng chéo. Ví dụ phổ biến: VPC module, EKS module, RDS module. Xem tại Terraform Registry.
Kết hợp với Terraform Cloud hoặc Atlantis, module cho phép workflow “plan as PR comment” – khi developer mở PR, bot tự động chạy plan và đăng comment kết quả. Reviewer nhìn thấy chính xác thay đổi trước khi merge. Đây là quy trình làm việc chuẩn của các team DevOps trưởng thành hiện nay.
Terraform vs CloudFormation/ARM Template
So sánh với công cụ native của cloud providers, Terraform mang lại ưu điểm vượt trội:
- Đa cloud: Một mã hoạt động trên AWS, Azure và GCP đồng thời.
- Cộng đồng lớn: Hàng nghìn module miễn phí trên Terraform Registry cho mọi nhu cầu từ VPC đến EKS cluster.
- Ngôn ngữ khai báo sạch: HCL (HashiCorp Configuration Language) dễ đọc và học hơn JSON/YAML của CloudFormation.
Tuy nhiên, công cụ native có thể hỗ trợ đầy đủ tính năng mới nhất sớm hơn vì được phát triển trực tiếp bởi nhà cung cấp cloud.
Kết luận
Terraform đã trở thành tiêu chuẩn de facto cho quản lý hạ tầng cloud trong doanh nghiệp và startup. Khả năng làm việc đa nền tảng, cộng đồng module phong phú, và quy trình làm việc an toàn qua plan/apply giúp đội ngũ triển khai hạ tầng nhanh chóng, nhất quán, và có thể kiểm soát. Nếu bạn đang quản lý nhiều tài nguyên cloud, Terraform là công cụ không thể thiếu trong bộ công cụ DevOps hiện đại.
