◾️はじめに
terraformコマンドをまとめてなかったので、メモしておく
目次
【0】terraformコマンド一覧 【1】terraform init 【2】terraform plan 【3】terraform apply 【4】terraform destroy 【5】terraform state 【6】terraform show 【7】terraform refresh 【8】terraform workspace 【9】terraform fmt 【10】terraform graph 【11】terraform import 【12】terraform validate
【0】terraformコマンド一覧
# | Command | Explanation | Memo |
---|---|---|---|
1 | terraform init | 初期化処理 | |
2 | terraform plan | 変更内容を確認する | |
3 | terraform apply | Terraformコードを実行する | yesを省略するには「terraform apply -auto-approve」 |
4 | terraform destroy | Terraformコードで作成したリソースを削除 | 実行前に「terraform plan -destroy」がよさげ |
5 | terraform state | Terraformの状態情報(.tfstate)に関するコマンド | |
6 | terraform show | 管理しているリソースを表示 | |
7 | terraform refresh | stateと実際のInfra状況を同期するようなコマンド | |
8 | terraform workspace | Workspaceに関するコマンド | |
9 | terraform fmt | HCLファイルをフォーマット | terraform fmt -recursive |
10 | terraform graph | Terraformの依存関係をグラフ化 | dot -Tpng > graph.png |
11 | terraform import | 既存のインフラストラクチャをTerraformの管理下に置くためのコマンド | terraform import [tfファイルのtypeとName] [対象リソース] |
12 | terraform validate | Terraform公式の 基本バリデーションツール |
【1】terraform init
* 初期化処理
https://developer.hashicorp.com/terraform/cli/commands/init
* 詳細は、以下の関連記事を参照のこと
Terraform ~ terraform initコマンド ~
https://dk521123.hatenablog.com/entry/2025/09/24/221918
【2】terraform plan
* 変更内容を確認する
https://developer.hashicorp.com/terraform/cli/commands/plan
【3】terraform apply
* Terraformコードを実行する
https://developer.hashicorp.com/terraform/cli/commands/apply
例
# yesを省略するには terraform apply -auto-approve # terraform destroy実行前に行う terraform plan -destro # 特定リソースのみデプロイする # terraform plan --target="random_pet.bucket_name" terraform apply --target="random_pet.bucket_name"
Terraform ~ 特定リソースのみデプロイ・削除する ~
https://dk521123.hatenablog.com/entry/2023/04/20/172823
【4】terraform destroy
* Terraformコードで作成したリソースを削除
https://developer.hashicorp.com/terraform/cli/commands/destroy
例
# 特定リソースのみ削除する # terraform destroy --target=[リソース名] --target=[リソース名] terraform destroy --target="random_pet.bucket_name"
Terraform ~ 特定リソースのみデプロイ・削除する ~
https://dk521123.hatenablog.com/entry/2023/04/20/172823
【5】terraform state
* Terraformの状態情報(.tfstate)に関するコマンド * e.g. terraform state pull: 現在のStateをBackendからダウンロードし、表示
https://developer.hashicorp.com/terraform/cli/commands/state
* 詳細は、以下の関連記事を参照のこと
Terraform ~ tfstate / Backend ~
https://dk521123.hatenablog.com/entry/2023/05/05/004939
構文
terraform state <subcommand> [options] [args]
Command | Explanation | Memo |
---|---|---|
terraform state list | 使用しているリソースを一覧表示 | |
terraform state mv | State内のリソース名を変更 | |
terraform state rm |
リソースをTerraformの管理から外す | ★お勧め★ |
terraform state pull | 現在のStateをBackendからダウンロードし、表示 | |
terraform state push | ローカルのStateファイルをリモートのBackendにアップロードする | |
terraform state show | リソースの詳細を表示 | terraform showコマンドのリソース指定版 |
[1] terraform state list
https://developer.hashicorp.com/terraform/cli/commands/state/list
[2] terraform state rm
https://developer.hashicorp.com/terraform/cli/commands/state/rm
* Stateファイルで管理されているリソースを削除(除外)する
https://zenn.dev/toritori0318/articles/983bd73e2d2158
にあるように、不整合が起きて、 terrraform refresh しても 状況が変わらない時に、使用したら解決できた。
【6】terraform show
* stateファイルを元に現在のリソースの状態を参照するコマンド => あくまで、現在の状態。terraform plan後の表示じゃない。
https://developer.hashicorp.com/terraform/cli/commands/show
【7】terraform refresh
* stateと実際のInfra状況を同期するようなコマンド
https://developer.hashicorp.com/terraform/cli/commands/refresh
【8】terraform workspace
* Workspace(※)に関するコマンド
https://developer.hashicorp.com/terraform/cli/commands/workspace
※:Workspaceとは? => 同一の tfファイル群を別の tfsate として扱うことができる機能
https://developer.hashicorp.com/terraform/language/state/workspaces
* 詳細は、以下の関連記事を参照のこと
Terraform ~ Workspace ~
https://dk521123.hatenablog.com/entry/2024/06/01/144048
構文
terraform workspace <subcommand> [options] [args]
Command | Explanation | Memo |
---|---|---|
terraform workspace list | 既存のworkspaceを一覧表示 | |
terraform workspace new |
Workspaceの新規作成 | terraform workspace new prod |
terraform workspace select |
Workspaceの選択 | terraform workspace select prod |
terraform workspace delete |
Workspaceの削除 | terraform workspace delete prod |
terraform workspace show | 選択中のWorkspaceを表示 |
[1] terraform workspace list
https://developer.hashicorp.com/terraform/cli/commands/workspace/list
[2] terraform workspace new
https://developer.hashicorp.com/terraform/cli/commands/workspace/new
【9】terraform fmt
* TFコードを整形してくれる(インデントの統一など) => 改行とかはそのまんまだった
https://developer.hashicorp.com/terraform/cli/commands/fmt
例
terraform fmt
terraform fmt コマンド実行前
data "external" "hello_world" { program = ["python", "hello_world.py"] query = { name = "Mike" } } output "result" { value = data.external.hello_world.result["result"] }
terraform fmt コマンド実行後
data "external" "hello_world" { program = ["python", "hello_world.py"] query = { name = "Mike" } } output "result" { value = data.external.hello_world.result["result"] }
【10】terraform graph
* terraform graphで、Terraformの依存関係をグラフ化することが可能
https://developer.hashicorp.com/terraform/cli/commands/graph
例
terraform graph | dot -Tsvg > graph.svg # PNGだと、システムがでかくなると画像が荒くて文字が見れない可能性あり terraform graph | dot -Tpng > graph.png # それ以外の対応画像形式は、以下を参照のこと。
https://www.graphviz.org/docs/outputs/
補足:GraphViz
* ただし、GraphViz が必要。 * DOT言語/GraphViz に関する詳細は、以下の関連記事を参照のこと
Python + DOT言語で図作成するには
https://dk521123.hatenablog.com/entry/2023/06/14/174104
DOT言語 ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2023/07/18/120407
【11】terraform import
* 指定した既存リソース・設定情報の定義をtfstateファイルに生成する
https://developer.hashicorp.com/terraform/cli/commands/import
例
# terraform import [tfファイルのtypeとName] [対象リソース]
terraform import aws_s3_bucket.sample_bucket sample-bucket
https://go-journey.club/archives/17121
https://tech.layerx.co.jp/entry/improve-iac-development-with-terraform-import
【12】terraform validate
* Terraform公式の 基本バリデーションツール => Terraformの構文チェックと基本的な論理チェックを行う => リソースの存在や構文ミスを検出
https://developer.hashicorp.com/terraform/cli/commands/validate
チェックできること
* HCL構文の正当性 * 参照関係の整合性(例: 未定義の変数を使っていないか)
例
terraform validate
関連記事
Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/05/03/000000
Terraform ~ tfstate / Backend ~
https://dk521123.hatenablog.com/entry/2023/05/05/004939
Terraform ~ Workspace ~
https://dk521123.hatenablog.com/entry/2024/06/01/144048
Terraform ~ terraform initコマンド ~
https://dk521123.hatenablog.com/entry/2025/09/24/221918
Terraform ~ terraform linter ~
https://dk521123.hatenablog.com/entry/2025/09/26/143659
Terraform ~ 複数環境へデプロイすることを考える ~
https://dk521123.hatenablog.com/entry/2023/05/06/003645
Terraform ~ 特定リソースのみデプロイ・削除する ~
https://dk521123.hatenablog.com/entry/2023/04/20/172823
Python + DOT言語で図作成するには
https://dk521123.hatenablog.com/entry/2023/06/14/174104
DOT言語 ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2023/07/18/120407