Quay lại blog
21 tháng 3, 20264 phút đọc

Terraform cơ bản - Bắt đầu với Infrastructure as Code

Hướng dẫn nhập môn giúp bạn hiểu Terraform, các khái niệm cốt lõi và cách provision hạ tầng hiệu quả bằng mã.

TerraformTerraformInfrastructure as CodeDevOpsCloud

Giới thiệu

Terraform là một trong những công cụ phổ biến nhất để quản lý hạ tầng bằng mã. Thay vì tạo tài nguyên thủ công trên các nền tảng cloud, Terraform cho phép bạn định nghĩa hạ tầng theo cách khai báo và quản lý version của nó giống như application code.

Trong bài viết này, chúng ta sẽ đi qua những kiến thức nền tảng về Terraform và cách bắt đầu với nó.


Terraform là gì?

Terraform là một công cụ Infrastructure as Code (IaC) được phát triển bởi HashiCorp. Nó cho phép bạn định nghĩa và provision hạ tầng bằng một ngôn ngữ cấu hình đơn giản tên là HCL (HashiCorp Configuration Language).

Với Terraform, bạn có thể quản lý:

  • Tài nguyên trên AWS, Azure, GCP
  • Cụm Kubernetes
  • Cơ sở dữ liệu
  • Hạ tầng mạng
  • Và nhiều thành phần khác

Vì sao nên dùng Terraform?

1. Cấu hình theo kiểu khai báo

Bạn chỉ cần định nghĩa điều mình muốn có, thay vì mô tả chi tiết từng bước thao tác.

resource "aws_s3_bucket" "example" {
  bucket = "my-bucket"
}

2. Quản lý version dễ dàng

Mọi thay đổi về hạ tầng có thể được theo dõi bằng Git, tương tự như cách bạn quản lý mã nguồn ứng dụng.

3. Tái sử dụng tốt

Terraform hỗ trợ module để bạn tái sử dụng các pattern hạ tầng quen thuộc.

4. Hỗ trợ đa nền tảng cloud

Bạn có thể dùng cùng một workflow để làm việc với nhiều cloud provider khác nhau.


Các khái niệm cốt lõi

1. Provider

Provider chịu trách nhiệm tương tác với API của nền tảng mà bạn dùng, ví dụ AWS hay Azure.

provider "aws" {
  region = "ap-southeast-2"
}

2. Resource

Resource đại diện cho một thành phần hạ tầng cụ thể.

resource "aws_instance" "example" {
  ami           = "ami-123456"
  instance_type = "t2.micro"
}

3. Variables

Biến giúp cấu hình của bạn linh hoạt và dễ tái sử dụng hơn.

variable "instance_type" {
  default = "t2.micro"
}

4. Outputs

Output cho phép hiển thị những thông tin hữu ích sau khi triển khai.

output "instance_ip" {
  value = aws_instance.example.public_ip
}

5. State

Terraform theo dõi hạ tầng thông qua state file, thường là terraform.tfstate.

State giúp Terraform:

  • Biết tài nguyên nào đang tồn tại
  • Phát hiện thay đổi
  • Tránh tạo trùng lặp

Workflow cơ bản của Terraform

Quy trình làm việc điển hình gồm 4 bước:

1. Initialize

terraform init

Lệnh này tải provider và khởi tạo project.

2. Plan

terraform plan

Hiển thị những gì Terraform sẽ thực hiện trước khi áp dụng thay đổi.

3. Apply

terraform apply

Thực thi plan và provision hạ tầng.

4. Destroy

terraform destroy

Xóa toàn bộ tài nguyên được định nghĩa trong cấu hình.


Ví dụ: tạo nhanh một EC2 trên AWS

provider "aws" {
  region = "ap-southeast-2"
}

resource "aws_instance" "web" {
  ami           = "ami-123456"
  instance_type = "t2.micro"

  tags = {
    Name = "terraform-example"
  }
}

Chạy:

terraform init
terraform plan
terraform apply

Các thực hành tốt

  • Dùng remote state, ví dụ S3 + DynamoDB trên AWS
  • Tổ chức code bằng module
  • Giữ cấu hình nhỏ gọn và dễ tái sử dụng
  • Tránh hardcode giá trị, hãy dùng variable
  • Dùng .tfvars cho cấu hình theo từng môi trường

Khi nào nên dùng Terraform?

Terraform đặc biệt phù hợp khi:

  • Bạn cần quản lý hạ tầng cloud
  • Bạn muốn khả năng tái lập môi trường
  • Bạn cần sự nhất quán giữa dev, staging và production
  • Bạn đang làm việc trong bối cảnh DevOps hoặc microservices

Kết luận

Terraform là một công cụ mạnh giúp mang tính tự động hóa, nhất quán và khả năng mở rộng vào quá trình quản lý hạ tầng. Khi đã nắm được các phần cơ bản như provider, resource và workflow, bạn có thể tự tin xây dựng các hệ thống phức tạp hơn.

Nếu bạn là kỹ sư phần mềm đang dịch chuyển sang DevOps hoặc cloud, Terraform là một kỹ năng rất đáng để đầu tư.

Support My Work

If you've enjoyed my content and found it helpful, consider buying me a coffee. It keeps me caffeinated and creating!