やりたいこと
Terraform でインフラを構築する際に、別で構成図を作成するのが面倒だったので State ファイルから自動的に作成できないものかと調べたところ、Pluralith というツールがあり便利そうだったので試してみました。その際の手順などをまとめます。
Pluralith
概要はこのページを見るとわかる。この記事も以下を参考に行っている。
前提
Mac にインストールして構成図を出力してみる。マシンスペックは以下。
OS: Monterey 12.6.3
CPU: M1 Max
Memory: 32 GB
導入手順
インストール
Pluralith の利用には登録が必要なので、以下ページからユーザ登録を行う。
ユーザ登録後、CI Setup
と Local Setup
を選択するウィンドウが表示される。ここでは、Local Setup
を選ぶ。その後、セットアップの手順を示してくれるウィンドウが表示されているはずなので、Download CLI
をクリックすると実行ファイルのダウンロードが始まる。
どこか適当なディレクトリに実行ファイルを保存する (ここでは、$HOME に保存したとする)。
まずは、ファイル名を pluralith
に変更する。
$ mv pluralith_cli_amd64_v0.2.2.exe pluralith
その後、/usr/local/bin
へコピーする。
$ sudo cp pluralith /usr/local/bin
実行するための権限を付与する。
$ chmod +x /usr/local/bin/pluralith
ここまで行うと、コマンドを実行できる状態になるので試しに version
コマンドを実行してみる。初回実行時には、Graph Module
のインストールが行われる。
$ pluralith version
以下のような出力が表示される。
_
|_)| _ _ |._|_|_
| ||_|| (_||| | | |
→ CLI Version: 0.2.2
→ Graph Module Version: 0.2.1
以上で、インストールは完了!
参考
セットアップ
ローカルで実行できるように設定していく。
まずは、pluralith にログインする。API KEY は実行ファイルをダウンロードしたページの中央に表示されているので、その値を使用する。
$ pluralith login --api-key {YOUR_PLURALITH_API_KEY}
ログインに成功すると以下のような出力が表示される。
_
|_)| _ _ |._|_|_
| ||_|| (_||| | | |
Welcome to Pluralith!
✔ API key is valid, you are authenticated!
実行
適当な Terraform のコードを書く。今回は Azure のリソースグループを作成して、そこにストレージアカウントとコンテナを作成してみる。
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.50.0"
}
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "sample" {
name = "rg-pluralith-trial"
location = "Japan East"
}
resource "azurerm_storage_account" "sample" {
name = "stpluralithtrial"
resource_group_name = azurerm_resource_group.sample.name
location = azurerm_resource_group.sample.location
account_tier = "Standard"
account_replication_type = "LRS"
}
resource "azurerm_storage_container" "sample" {
name = "pluralith"
storage_account_name = azurerm_storage_account.sample.name
container_access_type = "container"
}
コードを書いたら以下を実行して準備は完了。
$ terraform init
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/********/projects/pluralith-local-project/runs/********/
実行が完了するとブラウザが自動的に起動して、実行結果内のリンクが開かれる。以下のような感じ。
ストレージアカウントのコンテナがリソースグループ外に表示されているのはちょっと変な感じだが、割といい感じに構成図が作成されている!
凡例も画面左下に書かれており、今回は全部新規作成になるので Created
で表示されている。構成がもっと複雑になった時など、どれが新規作成かや更新されたかが見てわかるのはとても良さそう。
ということで
Pluralith を使って、Terraform のコードから構成図を作成してみました。
当初は、Windows11 + WSL2 (Ubuntu 22.04) で実行してみようとしていましたが、Pluralith から Terraform のコマンドで実行できないエラーが表示され、解決策が分からなかったので Mac でやってみました。
エラーは以下のような内容です。同じようなエラーに直面した・解決できたという方はコメントいただけると嬉しいです。PATH は問題なさそうなんだけどな…
⠿ Initiating Graph ⇢ Posting Diagram To Pluralith Dashboard
→ Authentication
✔ API key is valid, you are authenticated!
→ Plan
✘ Couldn't Generate Local Execution Plan
running terraform plan failed -> GenerateGraph: RunPlan: exec: "terraform": executable file not found in %PATH%
$ which terraform
/usr/bin/terraform
$ which pluralith
/usr/local/bin/pluralith
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files (x86)/Microsoft SDKs/Azure/CLI2/wbin
以上です。