🐄

インフラ構成図をPluralithで自動作成する

に公開

Pluralith(プラリス)とは

PluralithはTerraformで作成したインフラを可視化するツールです。
構成図を自動作成したり、他にもコストやリソースの変更を可視化することができます。

実際に使ってみて感じたことと、セットアップで躓いた箇所もあったので解消方法も合わせて記します。

セットアップ

ユーザー登録

利用にはPluralith公式ページからユーザー登録が必要です。ローカルから使うだけならお金はかかりません。

今回はローカルから実行するので、ログインしたらLocal Setupを選択します。

CLI設定

試したときはDownload CLIを押しても無反応だったため、in our docs.からCLIのダウンロードページに飛びました。

遷移先の公式ページに従いセットアップを進めていきます。

自分の場合はMac(Apple Silicon)用のpluralith_cli_darwin_amd64_v0.2.2をダウンロードしました。ダウンロードしたバイバリを以下のコマンド実行して利用できるようにします。

$ mv pluralith_cli_darwin_amd64_v0.2.2 pluralith
$ mv pluralith /usr/local/bin/
$ chmod +x /usr/local/bin/pluralith

先ほどブラウザに表示されたAPI keyを使用してログインします。

$ pluralith login --api-key {PLURALITH_API_KEY}

使ってみる

公式に従えばこれでセットアップできているはずなので早速実行してみますが、、

$ pluralith graph                                     
parsing response failed -> GetGitHubRelease: %!w(<nil>)
⠿ 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 Generation Failed

generating diagram failed -> GenerateGraph: running CLI command failed -> GenerateDiagram: fork/exec /Users/{username}/Pluralith/bin/pluralith-cli-graphing: no such file or directory

~/Pluralith/bin/pluralith-cli-graphingが無いと言われてエラーになってしまいます。。

バージョンを確認するとModuleがインストールされていないことも確認できます。

$ pluralith version
parsing response failed -> GetGitHubRelease: %!w(<nil>)
 _
|_)|    _ _ |._|_|_ 
|  ||_|| (_||| | | |

→ CLI Version: 0.2.2
→ Graph Module Version: Not Installed # ここ

エラー解消

エラーでググると同じ事象のissueを見つけました。
https://github.com/Pluralith/pluralith-cli/issues/131

こちらからpluralith-cli-graphingを直接インストールすれば解消できるようです。

先ほどと同じ流れでバイナリを必要な場所に配置します。

$ mv pluralith_cli_graphing_darwin_amd64_0.2.1 pluralith-cli-graphing
$ mv pluralith-cli-graphing ~/Pluralith/bin/
$ chmod +x ~/Pluralith/bin/pluralith-cli-graphing

再度バージョンを確認するとmoduleがインストールされていることを確認できました。

$ pluralith version
parsing response failed -> GetGitHubRelease: %!w(<nil>)
 _
|_)|    _ _ |._|_|_ 
|  ||_|| (_||| | | |

→ CLI Version: 0.2.2
→ Graph Module Version: 0.2.1

改めて使ってみる

2個のCLIをセットアップした状態で実行したら無事にグラフが作成されました 🚀

$ pluralith graph                             
parsing response failed -> GetGitHubRelease: %!w(<nil>)
⠿ 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/{url}/

シンプルなVPCとEC2を作成するコードを追加してgraphを出力してみます。(一部terraform用に作成済みのIAMリソースがグレー表示されています)

緑色で囲われているものが作成予定のリソースです。リソース間のリレーションも表現されていて良い感じです。

applyして次の変更を加えてみます。

  • EC2関連のリソース削除
  • cwlogs作成*2
  • S3バケット作成*3

作成/変更/削除が色分けで表示されていて分かりやすいですね。ウッカリ削除とかも防止できそうです。
cwlogsは別々で表示されていて、S3はグループ化されていました。S3が黒い枠なのは選択中のためで、ポップアップで詳細が表示されています。

まとめ

個人開発や小規模なインフラの場合は使えそうだと思いました。他にもリソース名も表示されるのも分かりやすくて良いと思いました。

実行ディレクトリにあるリソースは全て描画されてしまうため、特定のリソースが複数作られるようなある程度規模の大きなインフラでは、見にくくなってしまいそうなイメージがあります。
分かりやすさを重視するために構成図上では一部のリソースをまとめたり、省いたりすることもあると思うので、大規模なインフラとの相性はあまり良く無いかもと思いました。(stateを分割して実行するディレクトリを分けたりなどのカスタマイズはある程度可能とは思います。)

CIに組み込むことでPRのレビューがしやすくなりそうなので、構成図の自動作成とは別の観点から採用するのもアリだと思いました。料金は500 CI Runs で 250$/monthです。

Discussion