← Tổng quan series

HCP Terraform làm remote backend

Tổ chức state theo workspace, kết nối repository và đưa variable/secret ra khỏi laptop để team làm việc an toàn hơn.

Workspace là ranh giới vận hành

HCP Terraform (tên mới của Terraform Cloud) cung cấp workspace để gắn một cấu hình với một state riêng. Có thể đặt một workspace cho mỗi môi trường:

app-dev
app-staging
app-production

Đừng tạo một workspace duy nhất rồi dùng biến environment để phân biệt mọi thứ nếu quyền deploy và approval của production cần khác dev.

terraform {
  cloud {
    organization = "example-org"
    workspaces {
      name = "app-dev"
    }
  }
}

Sau đó:

terraform login
terraform init
terraform plan

Variable và secret

Variable không nhạy cảm có thể nằm trong workspace variables. Secret nên đánh dấu sensitive và chỉ dùng trong workspace/environment phù hợp. Không dán access key vào file .tf hay commit vào repository.

Một pattern an toàn hơn là để HCP dùng cloud dynamic credentials hoặc assume role ngắn hạn. Nếu tổ chức chưa có, dùng token có scope nhỏ và rotate đều đặn.

Remote run thay đổi cách debug

Khi workspace chạy remote, log và plan nằm trên HCP. Người review thấy cùng một kết quả từ cùng một runner, không phụ thuộc máy cá nhân. Khi có lỗi:

  1. Đọc bước Terraform và provider báo lỗi.
  2. Kiểm tra variable set, cloud role và working directory.
  3. So sánh commit đang chạy với commit local.
  4. Không chạy apply tay bằng credential admin để “bypass” quy trình.

Có thể đặt execution mode remote, local hoặc agent tùy mạng nội bộ. Agent phù hợp khi runner cần truy cập private VPC mà không mở inbound từ Internet.

Workspace mapping nên phản ánh quyền hạn

Một quy ước dễ audit:

repo: platform-infra
├── app-dev          -> auto plan, apply tự động sau merge
├── app-staging      -> plan tự động, apply manual
└── app-production   -> plan tự động, approval + policy + change window

Tách workspace giúp state, variable và quyền apply tách nhau. Nếu dùng workspace theo branch tạm thời, phải có TTL và cleanup; nếu không, state thử nghiệm sẽ tích tụ và credential có thể bị bỏ quên.

Trước khi cho phép remote apply, test một thay đổi vô hại như tag. Kiểm tra log run, actor, commit SHA, variable set và link tới plan. Một hệ thống tốt phải trả lời được “ai đã apply cái gì, từ commit nào, vào workspace nào”.

HCP Terraform không tự làm mọi thứ an toàn

Workspace vẫn cần policy IAM, approval cho production, state retention, notification và quy ước module. Hãy coi HCP là nơi cung cấp nền tảng phối hợp; chất lượng vẫn đến từ code, review và guardrail của team.

Bản chuyển thể từ Terraform Cloud as a Remote Backend.