👌

【Terraform】- Terraform planをファイルに出力したい

に公開

執筆日

2025/6/9

やること

Terraform planの結果をファイルに出力したいです。
ただ、結構めんどくさい。

サンプルコード

main.tf

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 3.0"
    }
  }
}

provider "azurerm" {
  features {}
}

# Resource Groupの作成
resource "azurerm_resource_group" "example" {
  name     = "example-rg"
  location = "Japan East"
}

# ストレージアカウントの作成
resource "azurerm_storage_account" "example" {
  name                     = "test01"  # 一意の名前が必要(小文字・数字のみ)
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
}

# Blobコンテナの作成
resource "azurerm_storage_container" "example" {
  name                  = "test"
  storage_account_name  = azurerm_storage_account.example.name
  container_access_type = "private"
}

検証

1. 画面の表示をそのままテキスト出力

TerraformのPlan結果をシンプルにテキストで保存したい場合のコマンドです。

terraform plan | tee plan-output.txt

2. バイナリ形式で出力

TerraformのPlanをバイナリ形式で保存します。この方法ではPlan結果をそのまま正確に適用できます。

terraform plan -out="plan.tfplan"

このバイナリをApplyするには、以下を実行します。

terraform apply plan.tfplan

また、人が読みやすいテキスト形式に変換する場合は以下のコマンドを使います。

terraform show -no-color plan.tfplan > plan-readable.txt

3. JSON形式で出力

JSON形式で出力することで、CI/CDパイプラインなどの自動化ツールで扱いやすくなります。

terraform plan -out="plan.tfplan"
terraform show -json plan.tfplan > plan.json

この方法で作成したファイルを使ってApplyする場合は、同じように以下を実行します。

terraform apply plan.tfplan

を実行する

まとめ

TerraformのPlan結果を出力する方法を整理しました。用途に応じて、以下のように使い分けるのがおすすめかと思います。

用途 推奨出力形式 理由・特徴
単純な確認・共有 画面表示そのまま出力 簡単で直感的だが、再適用には使えない
正確な適用・再現性 バイナリ形式 確実で安全にApply可能
CI/CDなど自動化連携 JSON形式 自動処理に最適
ヘッドウォータース

Discussion