![Terraform State をビジュアルで確認できるOSS「terraform-tui」の紹介](https://images.ctfassets.net/ct0aopd36mqt/wp-thumbnail-db64f1f2fda342fbdbdb6b2e336560e8/99e8f408bed87cdb4aa6bcadcaf57fc9/terraform-eyecatch.png)
Terraform State をビジュアルで確認できるOSS「terraform-tui」の紹介
お疲れさまです。とーちです。
Terraformを使っていて「今のState fileの状態を簡単に確認したいな」と思うことはないでしょうか?私は稀にあります。
今回は、そんな悩みを解決してくれる「terraform-tui」というOSSツールをご紹介したいと思います。
とりあえずまとめ
- 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を試してみます
なお、terraformによるapplyは実行済でAWS環境にはすでにリソースができている状態です
基本的な使い方
READMEには以下のように記載されています:
cd /path/to/terraform/project && tftui
が、/path/to/terraform/projectというのがどこを指してるのかいまいちわかりませんでした。
とりあえずcloneしてきたgitリポジトリのルートディレクトリ(terraform-development-terminal/
)まで移動してからtftuiを実行してみます。
こんな画面がでましたカッコイイですね
Stateのところをクリックしてみましたが、何も表示されません。別のディレクトリに移動してみます。
画面を抜けるにはq
を押します。なお操作方法は ?
を押すと確認できます
実際には、Terraformのplan/applyを実行できるディレクトリで実行する必要があります。terraform-development-terminal/environments/mgmt/network
に行ってから tftui
コマンドを実行してみます。
すると今度は以下のようにちゃんと表示されました。
↑↓キーで移動した後Enterを押して、適当にリソースを選択してみます。
こんな感じで選択したリソースの詳細を表示できるんですね。これは便利ですね。
escキー
で前の画面に戻ることができます
ここで気づいたのですが、普通にマウスカーソルでリソースを選択することもできました。
検索機能
検索もできるようなので試してみます。 /
キーを押すと検索用のウィンドウにカーソルが飛びます
「role」と入力するとそれっぽいリソースだけに絞ることができました。
IPアドレスでも検索してみたところちゃんとリソースを絞ることができました。リソースのパラメータの部分も含め検索できるみたいです
Plan/Applyの実行
planも試してみますモジュールを選択した状態で p
を押します
すると以下のような画面が表示されました。variablesが書かれたファイルを追加で指定できるみたいです。
yesを選択したところ、以下のようなエラーが発生しました。
このエラーの原因は今回私が用意した環境に起因するのですが、今回のTerraformコードはterragruntを使用して作成しています。terragruntの便利な機能の1つとして、複数のtfstate間でoutputの値を連携できる機能があります。この連携は以下のような流れで実現されています:
- あるtfstateでoutputとして値を出力
- 別のtfstateでその値をvariablesとして受け取る
- terragrunt実行時に、自動的にvariablesに適切な値が代入される
terraform-tuiは基本的にterragruntをサポートしていると謳っているものの、このような変数の受け渡しまではサポートしていないようです。
variables定義にdefault値を追加して再度実行してみます。
今度はちゃんと実行されました
試してませんが、a
を押すとapplyもできるようです
リソース単位での削除
またリソース単位でのdeleteもできるようです。
削除したあとplanをしてみるとたしかに削除したリソースが差分として表示されていました
まとめ
terraform-tuiの紹介でした。terraformのリソースをグラフィカルに確認できるので役に立つ場面もあるかもしれませんね。
以上、とーちでした。