LoginSignup
1
1

Pluralithで作成したEC2環境の構成図でコストを表示したい

Last updated at Posted at 2023-09-15

はじめに

業務でAWSの構成の一部をTerragruntを使用して管理しているのですが、構成が複雑になってゆくにつれてコードを読んで構成を理解するのが難しい、意図した構成になっているか視覚的になっていないので分かりづらいという問題がありました。
その問題をPlulalithで解消するためにTerraformの勉強と一緒にPlulalithも使ってみようという記事の第四弾です。

TerraformでEC2とEC2周辺のVPCやサブネット、インターネットゲートウェイなどのネットワーク周りの環境を作成するtfファイルを作成し、
作成した環境をもとにPluralithを使用して構成図を作成してみたのですが、Costsが表示できるようになったので備忘メモとして残しておきたいと思います。

また、前回同様以下書籍内の「TerraformではじめるAWS構成管理」の手順を参考にして実施しました。
Terraform初心者の方におすすめです。

これまでに行ったこと

やりたいこと

Pluralithで作成した構成図の「Costs」を表示したい!

環境

OS:Windows11 Pro
Terraform:v1.5.2
pluralith CLI Version: 0.2.2
pluralith Graph Module Version: 0.2.1
AWS CLI:2.4.23

今回作成した環境のコード

実際に記述したコードは前回同様のコードです。
リンクは以下になります。
記述したコードについて詳細は省きます。

また、リポジトリ内に「pluralith_graph」というディレクトリを作成したのですがその直下にPluralithで作成した構成図も置いてあります。

Plulalithで作成した構成図に「Costs」を表示できるようにするために必要なポイント

  • ポイント1.infracostの導入
  • ポイント2.Terraformへの設定

infracost導入までの手順

手順1.infracostの公式ドキュメントからzipファイルをダウンロードし、解凍、pluralithやterraformと同様Windows/System32に配置して環境変数を設定します。

※ちなみに、infracost.exeをインストールしただけだと以下のようにエラーが出ます(pluralith graphの実行は成功する)

PS C:\Users\ユーザー名\workspace\learn_terraform\terraform-chapter2> 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
  ⠏ Calculating Infrastructure CostsError: No INFRACOST_API_KEY environment variable is set.
We run a free Cloud Pricing API, to get an API key run infracost auth login

running infracost breakdown failed -> CalculateCost: exit status 1
  ✘ Couldn't Calculate Costs
  ✔ Costs Calculated

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

  → Diagram Pushed To: https://app.pluralith.com/.../pluralith-local-project/runs/.../

手順2.無料のAPI キーを取得する

無料のAPI キーを取得するためにはinfracostのアカウント登録が必要です。
公式ドキュメントだとサラッと書いてますがAPIキーが使えるようになるまで(Get Started!の内容を完了するまで)が大変でした。。。
スクリーンショット 2023-08-24 131401.png

まず、GitHubの方でinfracostを使用できるようにするためにGitHubにアプリケーションとして設定する必要があります。
また、実際にinfracostを使用してみるためにGitにプルリクを出して試しに動かす必要があるのでお試し用のリポジトリが必要でした(ちょうど構成図を作成してGitHubにアップしていてよかった。。。)。
ということで、用意していたお試し用のリポジトリで実際にプルリクを出すと自動でinfracostが動きだし、プルリクを出した差分からコストの差分を出してくれました。
そこまで確認が取れたら無料のAPIキー取得の準備は完了です。

その後以下コマンドを実行することでAPIキーが取得できました。

infracost configure get api_key

Terraformへの設定

取得したAPIキーをTerraformに登録する

続いて、TerraformへのAPIキーの登録です。

# cdでterraformリポジトリのディレクトリに移動
cd my-terraform-project
# Terraform variables can be set using --terraform-var-file or --terraform-var
infracost breakdown --path .
詰まりどころ

--pathの「path」が何なのか分からず詰まりました。
結論としてはinfracost configure get api_keyコマンドで取得したAPIキーです。

ちゃんとAPIキーを指定して実行したら無事動かせました。

PS C:\Users\ユーザー名\workspace\learn_terraform\terraform-chapter2> infracost breakdown --path=(APIキー)

やっとinfracostが利用できるようになったのでpluralith graphを実行してみます。

PS C:\Users\ユーザー名\workspace\learn_terraform\terraform-chapter2> 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
  ✔ Costs Calculated

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

  → Diagram Pushed To: https://app.pluralith.com/.../pluralith-local-project/runs/.../      

無事構成図の作成ができたようです。
気になる「Costs」の表示はというと。。。

スクリーンショット 2023-09-09 163906.png

表示できていました!
以下月ごとのコストと時間ごとのコストを画像出力させた結果です!

project_pluralith-local-project%2Frun_2397461%2Frun_2397461_1692858396573.png

project_pluralith-local-project%2Frun_2397461%2Frun_2397461_1692858417887.png

その後試しにEC2インスタンスのタイプをt2.microからt2.largeに変えてみたところ、以下のようにちゃんと金額が変わっていました!
スクリーンショット 2023-09-15 190144.jpg

所感

無事Costsを表示できるようになり、これでローカル実行した際の表示モードChanges、Costs、Viewが一通り表示できるようになりました。
今回はEC2のみ(ほかのサービスはリクエストに応じて課金されるため)だったのですが、他にも複数のCostがかかる構成も作成して構成図を表示してみたくなりました。

参考

ソフトウェアデザイン 2022年1月号

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1