Terraform State là gì? Vì sao Terraform State lại quan trọng? – Bài 5

Khi làm việc với Terraform, rất nhiều người mới thường chỉ tập trung vào file cấu hình (.tf) mà chưa nhận thức hết tầm quan trọng của Terraform State. Thực tế, Terraform State chính là “xương sống” của Terraform, nếu mất state thì Terraform gần như “mù” trước hạ tầng.

1. Terraform State là gì?

Terraform State là một file lưu trữ thông tin về toàn bộ hạ tầng mà Terraform đã tạo ra.

  • Tên mặc định:
    terraform.tfstate
  • Định dạng: JSON
  • Vai trò: lưu lại metadata của tất cả resource đã được Terraform triển khai

Có thể coi Terraform State như cơ sở dữ liệu (database) của Terraform. Terraform không query trực tiếp cloud provider để nhớ tài nguyên, mà dựa vào State file.

2. Terraform State dùng để làm gì?

Terraform State được sử dụng cho resource tracking (theo dõi tài nguyên).

Trong State file sẽ lưu:

  • Resource đã tạo (EC2, VPC, Database, …)
  • ID resource trên cloud
  • Metadata (CPU, RAM, disk, network, tags…)
  • Provider (AWS, Azure, GCP…)
  • Cấu hình hiện tại của resource

Chỉ những resource có trong State thì Terraform mới quản lý được

3. Luồng hoạt động của Terraform

Bước 1: Terraform Configuration

Bạn viết các file cấu hình:

  • Application Server
  • Network (VPC / VNet)
  • Database

Ví dụ:

  • EC2 trên AWS
  • VPC trên AWS
  • Database trên Azure

Bước 2: Terraform Apply

Khi chạy:

terraform init
terraform plan
terraform apply

Terraform sẽ:

  1. Tạo resource trên cloud
  2. Sau khi tạo xong → ghi lại toàn bộ thông tin vào terraform.tfstate

Bước 3: Terraform đọc State để quản lý hạ tầng

Terraform luôn đọc State trước, sau đó mới:

  • So sánh cấu hình mới (.tf)
  • So với cấu hình hiện tại trong State
  • Tính toán delta (sự thay đổi)

4. Terraform State giúp Terraform làm được những gì?

Cập nhật tài nguyên (Update)

Nếu bạn:

  • Tăng size EC2
  • Thêm subnet
  • Đổi instance type

Terraform sẽ:

  1. Đọc State hiện tại
  2. So sánh với file .tf
  3. Chỉ update phần thay đổi, không đụng phần còn lại

Xoá tài nguyên (Destroy)

Khi chạy:

terraform destroy

Terraform:

  • Không đoán
  • Không scan cloud

Mà dựa hoàn toàn vào State file để biết cần xoá resource nào

Tính toán chính xác thay đổi (Delta)

Khi chạy:

terraform plan

Terraform sẽ cho bạn biết:

  • Resource nào sẽ được tạo
  • Resource nào sẽ bị xoá
  • Resource nào sẽ bị update

5. Terraform State được lưu ở đâu?

Mặc định (Local State)

  • Lưu ngay trong thư mục chạy Terraform
  • File: terraform.tfstate

Remote State

Do State rất quan trọng, nên Terraform cho phép lưu ở remote backend:

Ví dụ:

  • AWS S3
  • Azure Blob Storage
  • Google Cloud Storage

Lợi ích:

  • Backup an toàn
  • Tránh mất State
  • Nhiều người dùng chung
  • Có thể lock State (tránh ghi đè)

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em