Terraform là gì? Hướng dẫn Infrastructure as Code cho người mới

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ả.

Sơ đồ workflow Write-Plan-Apply của Terraform với các provider đám mây

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.

Màn hình terminal hiển thị kết quả lệnh terraform plan với kế hoạch tạo tài nguyên

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:

  1. Write: Viết file cấu hình .tf mô tả hạ tầng mong muốn.
  2. 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ì.
  3. 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).

Màn hình terminal hiển thị kết quả lệnh terraform apply thành cô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ỳ.

Tham khảo thêm

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Web Scraping với Python: Hướng dẫn thu thập dữ liệu web cho người mới

Web scraping là kỹ thuật tự động tải trang web và trích xuất dữ liệu có cấu trúc như giá sản phẩm, tin tức hay bài đánh giá bằng script,…

Xem thêm
Web analytics dashboard showing performance metrics

Playwright là gì? Kiểm thử tự động web toàn diện

Playwright là gì? Kiểm thử tự động web toàn diện Playwright là framework mã nguồn mở do Microsoft phát triển, dùng để kiểm thử tự động (end-to-end testing) và tự…

Xem thêm

Go (Golang) là gì? Hướng dẫn toàn diện cho người mới

Go (Golang) là gì? Go, thường gọi tắt là Golang, là ngôn ngữ lập trình do Google phát triển và duy trì. Tên gốc “Go” được công bố chính thức…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất