0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraform 個人的最強フロー

Last updated at Posted at 2024-11-24

個人的最強フロー

//構文確認
terraform validate

//フォーマット整形
terraform fmt -recursive

//計画を保存
terraform plan -out=tfplan

//保存したプランを適用
terraform apply tfplan

//デバッグ時の状態確認
terraform state list
terraform state show aws_instance.main

1. terraform plan関連

アクセサリコマンド:プラン結果を保存
プラン結果を保存し、後から適用する
特に大規模なリソース変更を適用する際、プランの保存は安全性を高めます

terraform plan -out=tfplan
terraform apply tfplan

アクセサリコマンド:特定のリソースだけを計画
大規模プロジェクトで特定のリソースにだけ変更を計画

terraform plan -target=aws_instance.main

2. terraform apply関連

アクセサリコマンド:自動適用
ユーザー確認なしで適用を行う(非推奨だがCI/CDパイプラインで有用)

terraform apply -auto-approve

3. terraform destroy関連

アクセサリコマンド:特定のリソースだけを削除
全リソースを削除するのではなく、特定リソースだけを削除

terraform destroy -target=aws_instance.main

アクセサリコマンド:確認なしで全削除
全リソースをユーザー確認なしで削除する(非推奨、慎重に使用)

terraform destroy -auto-approve

4. terraform fmt(フォーマット)

アクセサリコマンド:コードフォーマットを強制
全ファイルを自動整形コードレビューやCI/CDでの利用がおすすめ

terraform fmt -recursive

5. terraform validate(構文チェック)

コードに構文エラーがないか確認
ポイント: terraform planよりも高速

terraform validate

6. terraform state(状態管理)

アクセサリコマンド:状態ファイルをリスト化
管理されているリソースを一覧表示

terraform state list

アクセサリコマンド:特定リソースの状態確認
リソースの状態を詳細に確認

terraform state show aws_instance.main

アクセサリコマンド:状態を手動で移動
状態を別のリソースに移動する

terraform state mv aws_instance.old aws_instance.new

7. terraform taint(リソース再作成フラグ)

特定リソースを「壊れた」とマークし、次回のapplyで再作成を強制

terraform taint aws_instance.main

逆操作:untaint
マークを解除し、再作成をスキップ

terraform untaint aws_instance.main

8. terraform graph(依存関係の可視化)

リソース間の依存関係をグラフ化して視覚的に確認
例: DOT形式で出力し、Graphvizでレンダリング

terraform graph | dot -Tpng > graph.png

9. terraform console(インタラクティブ操作)

コード内の値や計算をインタラクティブにテスト

terraform console
> aws_instance.main.tags["Name"]
> length(aws_instance.main.tags)

10. Terraform環境変数

アクセサリコマンド:デバッグモード有効化
詳細なデバッグログを確認するための環境変数

TF_LOG=DEBUG terraform apply

アクセサリコマンド:並列実行の制御
大量のリソースを扱う際に便利

terraform apply -parallelism=10
コマンド 説明 よく使用されるオプション
terraform init 作業ディレクトリを初期化し、プラグインをダウンロード -backend-config(バックエンド設定ファイルを指定)
terraform plan 実行プランを作成し、変更内容を表示 -out(プランをファイルに保存)、-var(変数を指定)
terraform apply インフラ変更を適用 -auto-approve(確認なしで適用)、-var(変数を指定)
terraform destroy インフラを削除 -auto-approve(確認なしで削除)、-var(変数を指定)
terraform fmt 設定ファイルの書式を整形 -recursive(再帰的に処理)
terraform validate 設定ファイルの構文を検証 なし
terraform show 状態やプランの内容を表示 -json(JSON形式で出力)
terraform output 出力変数の値を表示 -json(JSON形式で出力)、[name](特定の出力を表示)
terraform state 状態ファイルを管理 listshowrmmv(サブコマンド)
terraform import 既存リソースを管理下に取り込む なし
terraform taint リソースを再作成対象に設定 なし
terraform untaint taint状態を解除 なし
terraform graph リソースの依存関係を視覚化 -draw-cycles(循環依存を表示)
terraform refresh 実際の状態を取得し状態ファイルを更新 なし
terraform providers 使用中のプロバイダー情報を表示 -json(JSON形式で出力)
terraform workspace ワークスペースを管理 listselectnew(サブコマンド)
terraform login Terraform Cloudにログイン hostname(ホスト名を指定)
terraform logout Terraform Cloudからログアウト hostname(ホスト名を指定)
terraform state mv 状態内のリソースを移動 なし
terraform state rm 状態からリソースを削除 なし
terraform state pull リモート状態を取得 なし
terraform state push ローカル状態をリモートに反映 -force(強制的に上書き)
terraform state replace-provider プロバイダーを置換 -auto-approve(確認なしで適用)
terraform version Terraformのバージョン情報を表示 -json(JSON形式で出力)
terraform get モジュールをダウンロードまたは更新 -update(既存モジュールを更新)
terraform force-unlock ロック状態を解除 LOCK_ID(ロックIDを指定)
terraform debug デバッグモードでコマンドを実行 なし
terraform providers lock プロバイダーのバージョンをロック -platform(対象プラットフォームを指定)
terraform login Terraform Cloudにログイン hostname(ホスト名を指定)
terraform workspace new 新しいワークスペースを作成 [workspace_name](ワークスペース名)
terraform workspace select ワークスペースを選択 [workspace_name](ワークスペース名)
terraform workspace list ワークスペースの一覧を表示 なし
terraform state list 管理中のリソースを一覧表示 -state(状態ファイルを指定)
terraform state show リソースの詳細情報を表示 [resource_address](リソースアドレス)
terraform state rm リソースを状態から削除 [resource_address](リソースアドレス)
terraform state mv リソースを新しいアドレスに移動 [source] [destination]
terraform force-unlock ロックを強制的に解除 [LOCK_ID](ロックID)
terraform debug デバッグ情報を出力 なし
terraform apply -refresh-only 状態を更新 -auto-approve(確認なしで適用)

【参考】

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?