Chuyển tới nội dung chính

Workspaces

Nội dung đang được chuẩn bị. Quay lại sớm nhé!

Sắp có trong bài này

Workspaces là gì?

  • Cho phép dùng cùng một codebase nhưng có state riêng biệt cho từng môi trường
  • Mặc định có workspace default
  • Phù hợp khi dev/staging/prod có cấu hình gần giống nhau

Các lệnh cơ bản

terraform workspace list       # Liệt kê workspaces
terraform workspace new dev # Tạo workspace mới
terraform workspace select prod # Chuyển sang workspace
terraform workspace show # Xem workspace hiện tại
terraform workspace delete dev # Xóa workspace

Dùng workspace trong code

# Lấy tên workspace hiện tại
locals {
environment = terraform.workspace # "dev", "staging", "prod"

instance_type = {
dev = "t2.micro"
staging = "t2.small"
prod = "t2.medium"
}
}

resource "aws_instance" "web" {
instance_type = local.instance_type[terraform.workspace]
# dev → t2.micro, prod → t2.medium
}

Workflow với Workspaces

# Dev environment
terraform workspace select dev
terraform apply -var-file="dev.tfvars"

# Production environment
terraform workspace select prod
terraform apply -var-file="prod.tfvars"

Workspaces vs Multiple State Files vs Directories

ApproachProsCons
WorkspacesĐơn giản, một codebaseKhó isolate config lớn
Separate directoriesIsolate hoàn toàn, rõ ràngDuplicate code
TerragruntDRY + isolateCần học thêm tool

Khi nào KHÔNG nên dùng Workspaces?

  • Production và staging có cấu hình rất khác nhau
  • Cần isolate permissions (ai được apply prod?)
  • Trường hợp đó: dùng separate directories hoặc Terragrunt