🔍

Terraformの状態を可視化するツール、「Pluralith」を試す

2023/07/03に公開

Pluralithとは?

プラリスと読むみたいです。
Terraformの状態(state)を可視化するツールです。
こんな感じの図が自動で作成できたり、

コストやリソースの変更を可視化することができます。

GitHub
https://github.com/Pluralith/pluralith-cli

ドキュメント
https://docs.pluralith.com/docs/category/get-started

紹介動画
https://youtu.be/Cb6W3xly8mk

特徴

  1. pluralith graphを実行するだけで構成図を自動作成可能
  2. CIツールに組み込むことで、ドキュメント・構成図の作成を自動化
  3. 最新の変更をハイライトして見やすくする
  4. コストの可視化ができる(infracostが必要)

リポジトリのREADMEを参照のこと

使ってみる

Getting Startedに沿って使ってみましょう。
https://docs.pluralith.com/docs/get-started/run-locally/

※今回はRun Locallyで試しています。

インストール

Download CLI手順に従います。

$ pluralith version
 _
|_)|    _ _ |._|_|_ 
|  ||_|| (_||| | | |

→ CLI Version: 0.2.2
→ Graph Module Version: 0.2.1

ユーザ登録 & ログイン

こちらからユーザ登録します。
settingからAPIキーを取得し、CLIからログイン。

$ export PLURALITH_API_KEY="123xxxyyyzzz"
$ pluralith login --api-key $PLURALITH_API_KEY
 _
|_)|    _ _ |._|_|_ 
|  ||_|| (_||| | | |

Welcome to Pluralith!

  ✔ API key is valid, you are authenticated!

パターン1(ネットワークリソースとEC2)

シンプルな構成です。
Terraformの実行場所に移動し、pluralith graphを実行すると
pluralithコンソールに自動遷移し、図が表示されます。

$ pluralith graph
⠿ Initiating Graph ⇢ Posting Diagram To Pluralith Dashboard

→ Authentication
  ✔ API key is valid, you are authenticated!

→ Plan
  ✔ Local Execution Plan Generated
  ✔ Local Plan Cache Created
  ✔ Secrets Stripped
  - Cost Calculation Skipped

→ Graph
  ✔ Local Diagram Generated
  ✔ Diagram Posted To Pluralith Dashboard

  → Diagram Pushed To: https://app.pluralith.com/#/orgs/...略

表示された図がこちら

おっ、わかりやすい。いいですね

パターン2(ECS on プライベートサブネット構成)

過去に作ったECS on プライベートサブネット構成で試しましょう。
https://github.com/not75743/Terraform-Private-Fargate-ALB

すこし分かりづらいかも...

パターン3(s3を追加する)

このように既存のtfファイルにs3を追加します。

resource "aws_s3_bucket" "test" {}

applyはせずにpluralith graphを実行すると

Changesからs3のみグラフィカルに表示されていることがわかります。
画面左下Createdを有効にすると作成予定のリソースがグラフィカルに表示されるようです。
terraform planより直感的でわかりやすそうです。

パターン4(s3を削除する)

パターン3でs3をapplyした後、tfファイルから記載を削除します。
前回同様applyはせず、pluralith graphを実行します

-resource "aws_s3_bucket" "test" {}

画面左下Destroyedが有効になり、削除予定のs3がグラフィカルに表示されました。

パターン5(複数リソース削除する)

s3に加えてEC2とそのセキュリティグループもtfファイルより削除して更新します。

s3に加えてセキュリティグループとEC2もグラフィカルに表示されます。
これはわかりやすいです。意図しない対象の削除も直感的に気づくことができそうです。

所感

  • 図は直感的でわかりやすい。導入も簡単
  • 意図しないリソースの追加、削除がこれを使うと減りそう
  • 簡単な図ならきれいに表示できる。リソース数が多くなってくると分かりづらい
  • CIと組み合わせて、自動ドキュメント・作図をするのは夢がある

おわりに

非常に使いやすく、きれいに作図してくれるツールでした。
リソースが少ない小規模のTerraform構成に使うのがよさそうです。
リソースが多い場合は試してから検討しましょう、インストールもまったく難しくないです。

またinfracostの存在も今回知ったため、今後さわってみたいです。

参考

https://taru.work/devops/pluralith-get-started/
https://dev.classmethod.jp/articles/terraform-visualise-pluralith/

Discussion