Terraform State をビジュアルで確認できるOSS「terraform-tui」の紹介

Terraform State をビジュアルで確認できるOSS「terraform-tui」の紹介

Terraform State をビジュアルで確認できる terraform-tui の使い方を紹介します
Clock Icon2025.02.07

お疲れさまです。とーちです。

Terraformを使っていて「今のState fileの状態を簡単に確認したいな」と思うことはないでしょうか?私は稀にあります。
今回は、そんな悩みを解決してくれる「terraform-tui」というOSSツールをご紹介したいと思います。

https://github.com/idoavrah/terraform-tui/tree/main

とりあえずまとめ

  • Terraform Stateをグラフィカルに可視化できる
  • リソースの検索や詳細表示が直感的に可能
  • Plan/Applyもツール上から実行可能

terraform-tuiの主要機能

1. State管理の可視化

  • Terraform stateツリーの完全な可視化
  • リソース状態の詳細表示と簡単なナビゲーション
  • ツリー構造での直感的な状態把握

2. 検索・操作機能

  • stateツリーとリソース定義の検索
  • リソースの単一/複数選択
  • リソースの削除機能

3. Plan/Apply機能

  • terraform-tuiからのplan作成と適用
  • カラフルな差分表示

4. 便利な追加機能

  • ワークスペース切り替え
  • Terragruntなどのラッパーツールのサポート
  • Vimライクなナビゲーション

インストール方法

macOSの場合は、Homebrewを使って簡単にインストールできます:

brew install idoavrah/homebrew/tftui

また、pipを使用したインストールもサポートされています。

やってみる

今回は以下のリポジトリのTerraformコード(Terragruntも使用)を使って、terraform-tuiを試してみます

https://github.com/ice1203/terraform-development-terminal

なお、terraformによるapplyは実行済でAWS環境にはすでにリソースができている状態です

基本的な使い方

READMEには以下のように記載されています:

cd /path/to/terraform/project && tftui

が、/path/to/terraform/projectというのがどこを指してるのかいまいちわかりませんでした。

とりあえずcloneしてきたgitリポジトリのルートディレクトリ(terraform-development-terminal/ )まで移動してからtftuiを実行してみます。

こんな画面がでましたカッコイイですね

image.png

Stateのところをクリックしてみましたが、何も表示されません。別のディレクトリに移動してみます。

画面を抜けるにはq を押します。なお操作方法は ?を押すと確認できます

image.png

実際には、Terraformのplan/applyを実行できるディレクトリで実行する必要があります。terraform-development-terminal/environments/mgmt/networkに行ってから tftuiコマンドを実行してみます。

すると今度は以下のようにちゃんと表示されました。

image.png

↑↓キーで移動した後Enterを押して、適当にリソースを選択してみます。

image.png

こんな感じで選択したリソースの詳細を表示できるんですね。これは便利ですね。

escキーで前の画面に戻ることができます

ここで気づいたのですが、普通にマウスカーソルでリソースを選択することもできました。

検索機能

検索もできるようなので試してみます。 / キーを押すと検索用のウィンドウにカーソルが飛びます

「role」と入力するとそれっぽいリソースだけに絞ることができました。

image.png

IPアドレスでも検索してみたところちゃんとリソースを絞ることができました。リソースのパラメータの部分も含め検索できるみたいです

image.png

Plan/Applyの実行

planも試してみますモジュールを選択した状態で pを押します

image.png

すると以下のような画面が表示されました。variablesが書かれたファイルを追加で指定できるみたいです。

image.png

yesを選択したところ、以下のようなエラーが発生しました。

image.png

このエラーの原因は今回私が用意した環境に起因するのですが、今回のTerraformコードはterragruntを使用して作成しています。terragruntの便利な機能の1つとして、複数のtfstate間でoutputの値を連携できる機能があります。この連携は以下のような流れで実現されています:

  1. あるtfstateでoutputとして値を出力
  2. 別のtfstateでその値をvariablesとして受け取る
  3. terragrunt実行時に、自動的にvariablesに適切な値が代入される

terraform-tuiは基本的にterragruntをサポートしていると謳っているものの、このような変数の受け渡しまではサポートしていないようです。

variables定義にdefault値を追加して再度実行してみます。

今度はちゃんと実行されました

image.png

試してませんが、aを押すとapplyもできるようです

リソース単位での削除

またリソース単位でのdeleteもできるようです。

image.png

削除したあとplanをしてみるとたしかに削除したリソースが差分として表示されていました

image.png

まとめ

terraform-tuiの紹介でした。terraformのリソースをグラフィカルに確認できるので役に立つ場面もあるかもしれませんね。

以上、とーちでした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.