👌
【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