CI/CD パイプラインで Google Cloud リソースを Terraform でプロビジョニングしています。Terraform の state ファイルを安全にチームで共有する最も適切な方法はどれですか?
- A. Terraform を実行するたびに既存の state を削除して再作成する
- B. 各開発者がローカルに state ファイルのコピーを保持して変更前に手動マージする
- C. Terraform の Cloud Storage バックエンドを設定して state を GCS バケットに保存し、state ロックに Cloud Firestore/Spanner を使う
- D. state ファイルをコードリポジトリ(Git)にコミットして管理する
解答と解説を見る
正解: C
Terraform の remote state として Cloud Storage バックエンドを使うと、state ファイルが一元管理されてチームで安全に共有できます。GCS の Versioning を有効にすると state の変更履歴も保持されます。State ロック(同時実行防止)には Cloud Firestore の Terraform provider が対応しています。Git への state ファイルのコミットは機密情報(APIキー・パスワードなど)が含まれる可能性があり、セキュリティリスクがあります。各開発者がローカルに保持する方法は競合が発生しやすく非現実的です。毎回 state を削除すると既存リソースとの整合が取れなくなり、重大な問題を引き起こします。
📚 関連サービスの解説: Cloud Storage ・ Firestore