Nếu bạn đang học DevOps hoặc chuẩn bị thi chứng chỉ HashiCorp Certified: Terraform Associate, đây là bài đầu tiên bạn cần đọc. Mình sẽ giải thích Terraform là gì, tại sao cần dùng, và cách cài đặt để bắt đầu thực hành ngay.
1. Infrastructure as Code (IaC) là gì?
Hãy tưởng tượng bạn đang quản lý hạ tầng AWS: có EC2, RDS, VPC, security group… tất cả đều được tạo thủ công qua Web Console. Ban đầu thì ổn, nhưng khi hệ thống lớn dần lên, vấn đề bắt đầu xuất hiện:
- Không ai nhớ hết đã tạo những gì, cấu hình ra sao
- Dev mới vào không biết hạ tầng trông như thế nào
- Ai đó vô tình xóa một resource → phải tạo lại thủ công, và chắc gì đã đúng cấu hình cũ
- Nếu cả môi trường bị lỗi → xây lại từ đầu, mất hàng ngày
Infrastructure as Code (IaC) giải quyết đúng những vấn đề trên. Thay vì click trên console, bạn viết code để mô tả hạ tầng cần có. Từ đó:
- Hạ tầng được lưu trữ như source code → có thể commit lên Git
- Ai cũng đọc được, hiểu được cấu hình
- Khi có sự cố → chạy lại code là xong, không cần nhớ từng bước thủ công
Tóm lại: IaC = hạ tầng được tạo và quản lý bằng code, không phải bằng tay.
Lợi ích của IaC
Về lợi ích cốt lõi, IaC đem lại hai thứ quan trọng nhất:
- Versioning cho infrastructure: Toàn bộ cấu hình hạ tầng được lưu dưới dạng code, commit lên Git như bình thường. Muốn xem hạ tầng thay đổi thế nào qua từng giai đoạn, hay rollback về trạng thái cũ — đều làm được.
- Chia sẻ và tái sử dụng: Viết một lần, dùng cho nhiều môi trường. Team khác cần hạ tầng tương tự? Clone code về chạy là xong, không cần làm lại từ đầu.
Ngoài ra, IaC còn mang đến một số tính chất quan trọng trong vận hành:
| Tính chất | Ý nghĩa |
|---|---|
| Idempotent | Chạy đi chạy lại nhiều lần với cùng config → kết quả vẫn như nhau. Không lo tạo thừa resource hay lỗi do chạy lại. |
| Consistent | Mọi môi trường — dev, staging, production — đều được tạo từ cùng một code, cấu hình đồng nhất. |
| Repeatable | Cần dựng lại môi trường? Chạy lại code là có ngay, không cần nhớ từng bước thủ công. |
| Predictable | Biết chính xác hạ tầng sẽ trông như thế nào trước khi apply, không có bất ngờ. |
2. Terraform là gì?
Terraform là công cụ IaC mã nguồn mở do HashiCorp phát triển. Bạn viết file cấu hình mô tả hạ tầng muốn có, Terraform đọc file đó và tự động tạo/thay đổi/xóa các resource tương ứng.
Điểm mạnh lớn nhất của Terraform so với các công cụ khác là hỗ trợ đa nền tảng. Cùng một cú pháp, bạn có thể triển khai lên:
- Public Cloud: AWS, Google Cloud, Azure, Oracle Cloud, Alibaba Cloud
- Container: Kubernetes
- Private Cloud: OpenStack, VMware vSphere

3. Terraform vs Ansible — cái nào dùng cho việc gì?
Đây là câu hỏi mình hay gặp khi mới học. Cả hai đều liên quan đến tự động hóa, nhưng mục đích khác nhau:
- Terraform → tạo và quản lý hạ tầng (tạo VM, network, database…)
- Ansible → cấu hình hệ thống sau khi đã có máy chủ (cài Docker, setup CI, cấu hình Nginx…)
Trong thực tế, hai công cụ này thường được dùng kết hợp theo quy trình:
Terraform tạo hạ tầng → Ansible cấu hình máy chủ → Docker/K8s deploy ứng dụng

4. Tại sao nên dùng Terraform
Ngoài những lợi ích chung của IaC, Terraform còn có một số điểm riêng đáng chú ý:
Quản lý phiên bản hạ tầng: Bạn nâng cấp hệ thống từ version cũ lên mới, nhưng nếu có vấn đề vẫn có thể rollback lại dễ dàng vì code cũ vẫn còn đó.
State management: Terraform lưu trạng thái hiện tại của hạ tầng vào file terraform.tfstate. Nhờ đó nó biết resource nào đã tồn tại, cái gì cần thêm, cái gì cần xóa — thay vì tạo lại từ đầu mỗi lần chạy.
Idempotent: Chạy Terraform nhiều lần với cùng một config → kết quả vẫn như nhau. Không lo bị tạo thừa resource hay bị lỗi do chạy lại.

5. Cài đặt Terraform
Trên Linux (Ubuntu/Debian)
1. Tải khoá chữ ký HashiCorp:
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
2. Thêm repo HashiCorp và xác định phiên bản hệ điều hành:
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
3. Cập nhật danh sách gói:
sudo apt update
4. Cài đặt Terraform:
sudo apt install terraform
5. Kiểm tra phiên bản Terraform đã cài:
terraform -version
Trên Windows
Việc cài đặt Terraform trên Windows bao gồm tải về gói Terraform phù hợp, giải nén và thiết lập đường dẫn trong biến môi trường. Thực hiện theo các bước sau:
1. Truy cập trang Install Terraform.
2. Chọn Windows dưới mục “Operating System”. Chọn phiên bản AMD64 cho Windows 64-bit.

3. Giải nén tệp tải về và chọn một vị trí dễ nhớ, ví dụ: C:\Terraform.
4. Mở Start Menu, gõ “environment” và chọn Edit system environment variables. Trong cửa sổ System Properties, nhấn Environment Variables.

5. Chọn Path trong “System variables” để áp dụng cho tất cả tài khoản hoặc chọn “User variables” nếu chỉ muốn áp dụng cho tài khoản hiện tại.

6. Nhấn New, nhập vào đường dẫn thư mục C:\Terraform. Nhấn OK để lưu các thay đổi.

7. Nhập lệnh: terraform -version Kiểm tra phiên bản Terraform đã cài đặt.
Tóm lại
Bài này mình đã đi qua:
- IaC là gì và tại sao nó quan trọng trong DevOps hiện đại
- Terraform là công cụ IaC của HashiCorp, hỗ trợ đa cloud, dùng để tạo và quản lý hạ tầng
- Sự khác biệt giữa Terraform và Ansible
- Cách cài đặt Terraform trên cả Linux lẫn Windows
Bước tiếp theo:
bài Terraform init, plan và apply — mình sẽ viết file
.tfđầu tiên và thực hành tạo resource thật trên AWS.03-Terraform Provider là gì? Tại sao bắt buộc phải có Provider