基礎建設即程式碼 中階
Terraform State 是什麼?團隊協作時如何管理遠端 State?
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 評分
