Tìm hiểu cấu hình Workspace trong Terraform

29

Tìm hiểu cấu hình Workspace trong TerraformCuongquach.com | Một chủ đề nho nhỏ trong Terraform (IaC), chúng ta cùng điểm qua cách sử dụng tính năng Workspace trong Terraform dùng để làm gì ? và dùng như thế nào nhé ?

terraform-workspace-tim-hieu

Workspace trong Terraform là gì ?

Đầu tiên, cần lưu ý là khái niệm “Workspace” sử dụng trong chương trình mã nguồn mở “Terraform” sẽ khác so với Workspace trong dịch vụ Terraform Cloud/Terraform Enterprise đã được HashiCorp cung cấp. Trong bài viết này chúng ta đề cập đến Workspace trong chương trình mã nguồn mở Terraform .

Đầu tiên ôn lại đôi chút là, trạng thái của đối tượng resource do  terraform quản lý sẽ được lưu trữ ở một file terraform.tfstate có định dạng JSON. Các nguồn storage dùng để lưu trữ thông tin trạng thái state đó thường được gọi là backend , có thể là:

  • Local filesystem
  • S3 AWS
  • GCP
  • Azure

Terraform luôn bắt đầu làm việc với một workspace mặc định tên là ‘default‘. Workspace này không thể bị xoá bỏ được vì mặc định nó sẽ luôn tồn tại. Nếu bạn sử dụng Terraform mà không chỉ định workspace khác thì bạn sẽ luôn luôn lưu trữ dữ liệu state của resource trên “default” workspace.

Vậy Workspace trong Terraform có thể coi là một kĩ thuật để quy hoạch lưu trữ nhiều trạng thái (state) về các resource khác nhau trong cùng 1 thư mục cấu hình resource terraform.

Một số lưu ý khác:

  • Nếu không xài workspace nào khác ngoài default thì cấu trúc thư mục chứa file terraform.tfstate của bạn chỉ như này.

  • Khi cấu hình nhiều Workspace khác nhau, thì các file state sẽ được cấu trúc trong thư mục storage backend như sau : ./terraform.tfstate.d/<workspace_name>/terraform.tfstate

Khi nào sử dụng Workspace Terraform

  • Thường có thể bạn sẽ làm lab/test thực hành cấu hình Terraform nhiều môi trường khác nhau chẳng hạn.
  • Bạn cũng có thể ứng dụng Workspace với Git Version Control khi chạy CI/CD để quản lý hạ tầng ở các môi trường khác nhau. Ví dụ: ở branch dev thì sẽ chạy workspace dev , ở branch qa thì sẽ chạy workspace qa . Đây thường là mô hình sử dụng dễ gặp với Terraform Workspace. => Còn với ý kiến mình thì mình không áp dụng kỹ thuật này để quản lý nhiều môi trường resource với Terraform.

Cú pháp sử dụng Terraform Workspace

+ Cú pháp tạo Workspace mới

+ Cú pháp chuyển Workspace

+ Cú pháp xoá Workspace

+ Cú pháp liệt kê Workspace

Lab thực hành Workspace Terraform

Giờ ta tạo resource AWS để lab phần workspace này nhé. Mình sẽ tạo AWS VPCAWS Internet Gateway ở workspace default trước.

Phần chứng thực giữa Terraform với AWS , mình đã tạo 1 IAM User với Credentials Access Key/Secret Key và export dưới hình thức biến môi trường để lab (phần này các bạn tự tìm hiểu lại nhé).

File cấu hình Terraform ‘main.tf’ . Bạn sẽ truy xuất thông tin workspace ở biến ${terraform.workspace} .

Giờ ta plan, apply và show nhé.

Bạn sẽ thấy có một file ‘terraform.tfstate’ được Terraform khởi tạo ở ngay local thư mục chứa file config (đang xài backend local filesystem nhé).

Giờ ta tạo một Workspace khác, dùng cho môi trường Dev chẳng hạn.

Khi bạn chạy terraform show, sẽ thấy terraform không thể hiện thông tin các resource đã khởi tạo ở Workspace default.

Giờ bạn thử plan, apply lại thử lần nữa nào. Để ý phần “tag” sẽ thấy tên của Workspace mới.

Lúc này bạn list các file trong thư mục local ra sẽ thấy các file terraform.tfstate .

Nguồnhttps://cuongquach.com/

LEAVE A REPLY

Please enter your comment!
Please enter your name here