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ã.
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
.tfvarscho 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!