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