Terraform State
Terraform がインフラの現在の状態を管理するファイルとリモートバックエンド
Terraform State とは
Terraform State は、Terraform が管理するインフラリソースの現在の状態を記録する JSON ファイル (terraform.tfstate) である。Terraform は State と設定ファイル (.tf) を比較して、何を作成・変更・削除するかを決定する。
terraform plan の動作:
設定ファイル (.tf) ← 望ましい状態
State ファイル ← 現在の状態
差分 = plan ← 実行すべき変更
State がないとどうなるか
State がなければ、Terraform は既存のリソースを認識できない。terraform apply を実行するたびに、既存のリソースを無視して新しいリソースを作成しようとする。State は「Terraform が管理しているリソースの一覧」だ。
リモートバックエンド
State ファイルをローカルに保存すると、チームメンバー間で共有できず、同時に terraform apply を実行すると State が壊れる。リモートバックエンドで State を一元管理する。
S3 + DynamoDB (AWS 標準)
terraform {
backend "s3" {
bucket = "myapp-terraform-state"
key = "prod/terraform.tfstate"
region = "ap-northeast-1"
dynamodb_table = "terraform-locks" # ステートロック
encrypt = true
}
}
State に含まれる機密情報
State ファイルには、DB パスワード、API キー、IAM ロールの ARN など機密情報が平文で含まれる。
対策:
ステートロック
2 人が同時に terraform apply を実行すると、State が破損する。DynamoDB テーブルでロックを取得し、同時実行を防止する。
User A: terraform apply → DynamoDB ロック取得 → 実行中...
User B: terraform apply → ロック取得失敗 → "Error: state locked"
User A: 完了 → ロック解放
User B: terraform apply → ロック取得 → 実行
SAM/CloudFormation との違い
SAM/CloudFormation は State を AWS 側 (CloudFormation スタック) で管理するため、State ファイルの管理が不要だ。Terraform は State を自前で管理する必要がある分、マルチクラウド対応や柔軟性が高い。
State の管理方法
State の管理方法を以下にまとめる。
| 方法 | 説明 | 推奨 |
|---|---|---|
| ローカル | ファイルシステムに保存 | ❌ チーム開発に不向き |
| S3 + DynamoDB | リモートバックエンド | ✅ AWS 推奨 |
| Terraform Cloud | マネージドサービス | ✅ |
Terraform State の関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
Terraform
HashiCorp の IaC ツールで、マルチクラウドのインフラをコードで宣言的に管理する
CloudFormation
AWS のインフラをテンプレート (YAML/JSON) で宣言的に定義・管理する IaC サービス
インフラストラクチャドリフト
IaC で定義した状態と実際のインフラの状態が乖離する問題
列指向ストア
データを列 (カラム) 単位で保存し、分析クエリの集計を高速化するストレージ形式
ファイルディスクリプタ
OS がオープンしたファイルやソケットを識別するための整数値
YAML
人間が読みやすいデータシリアライゼーション形式で、設定ファイルや CI/CD の定義に広く使われる
関連する記事
技術書の読書ログを GitHub で管理する - エンジニアらしい記録法
技術書の読書記録を GitHub リポジトリで管理する方法を紹介します。Markdown で読書ノートを書き、コミット履歴で読書の軌跡を残す、エンジニアならではの読書ログ術です。
技術書の読む順番戦略 - 複数冊を組み合わせて理解を加速させる
技術書を 1 冊ずつ読むのではなく、複数冊を戦略的に組み合わせることで理解の深さと速度を飛躍的に高める方法を解説します。
深夜 3 時のデプロイ前に読み返したい 1 ページ
本番デプロイの直前、最終確認のチェックリストとして技術書の特定のページが役立つことがあります。緊張の場面で頼りになる「お守りの 1 ページ」の見つけ方と活用法。