基礎建設即程式碼 中階

Terraform State 是什麼?團隊協作時如何管理遠端 State?

AI 練習作答

Terraform State 的作用

State 檔案(terraform.tfstate)記錄 Terraform 已知的資源狀態,是 Terraform 判斷「現有狀態 vs 期望狀態」差異的依據。

若無 State:Terraform 不知道哪些資源已存在,每次 apply 都可能重複建立或覆蓋資源。

本地 State 的問題

  • 多人同時執行 apply 會造成衝突(race condition)
  • State 檔案包含敏感資訊(密碼、金鑰),不能提交至 Git
  • 無法支援團隊協作

遠端 State(Remote Backend)

將 State 存放在共享的遠端位置,常見選項:

Backend 特點
AWS S3 + DynamoDB S3 存放 state,DynamoDB 提供 state locking
Terraform Cloud 官方託管,含 UI 與協作功能
GCS(Google Cloud Storage) GCP 環境的原生選擇

State Locking

防止多個使用者同時修改 State 造成衝突。DynamoDB locking 設定:

terraform { backend "s3" { bucket = "my-tf-state" key = "prod/terraform.tfstate" region = "us-east-1" dynamodb_table = "terraform-locks" encrypt = true } }

最佳實踐

  • State 隔離:每個環境(dev/staging/prod)使用獨立的 state 檔案
  • 敏感資料:啟用 S3 encryption,限制 bucket 存取權限
  • 不要手動編輯 state:使用 terraform state 指令操作

✦ AI 模擬面試

輸入你的答案,AI 即時分析精準度與改進空間

登入後即可使用 AI 評分