search

02-Terraform là gì? Hiểu về Infrastructure as Code từ A đến Z

calendar_today Đăng ngày: 28/04/2026

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

Terraform là gì

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

quy trình triển khai ứng dụng tối ưu

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.

Tại sao nên dùng Terraform

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.

Cài đặt Terraform trên Windows

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.

Cài đặt Terraform trên Windows

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.

Cài đặt Terraform trên Windows

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.

Cài đặt Terraform trên Windows

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

05-Terraform State là gì? Tại sao nó quan trọng?