【Terraform】tfcmtを使用してGitHubのPRにplanの結果をコメントする

Terraform

 

terraform planの結果をGitHubのPRにコメントしてくれる便利なツールを見つけました

その名もtfcmt!!

GitHub Actionsに導入するのも簡単なので、皆さんもぜひ本記事を参考にしてみてください

 

tfcmtとは?

 

tfcmtを使うとterraform planやapplyの結果をGitHubのPullRequestにコメントしてくれます。

 

ソースコード

GitHub - suzuki-shunsuke/tfcmt: Fork of mercari/tfnotify. tfcmt enhances tfnotify in many ways, including Terraform >= v0.15 support and advanced formatting options
Fork of mercari/tfnotify. tfcmt enhances tfnotify in many ways, including Terraform >= v0.15 support and advanced formatting options - suzuki-shunsuke/tfcmt

公式ドキュメント

tfcmt | tfcmt
Build Status

Zennの記事

tfcmt で Terraform の CI/CD を改善する

 

tfactionなるものもあるのでご興味がある方はぜひ!

 

tfcmtを使わないと…..

 

tfcmtを使用しなくてもActionsのログからplanやapplyの結果を見れますが、面倒。。。

また、今まではgithub-scriptでJavaScriptを使ってplanの結果をPRにコメントしてました

【Terraform】GitHub Actions を使って、planやapplyを自動化しよう
Terraformでの plan, apply をGitHub Actions で自動化してみます ゴール ↓の表のようなPR作成→マージの処理を作っていきます No. 処理 備考 1...

 

 

ただ、この方法だとRefreshing state などのログもコメントに含まれ見にくい。

何が作成?変更?削除?されるのかもわかりづらい。

 

tfcmtを使うと、

  • いくつリソースが作成、変更、削除されるかがパッとわかる
  • リソース削除されるときに警告される
  • planの詳細も関係あるリソースのみ表示される

ので、とても見やすいコメントをしてくれます!

レビューする側からすると負荷がとても減りますよね

 

GitHubActionsに組み込む

 

ここからはtfmctをGitHubActionsに組み込んでいきます!

 

↓のようにワークフローを定義しました(ポイントはハイライト部)

 

ハイライト部をそれぞれ見ていきます

 

まずは、tfcmtのセットアップをします

wgetしてtargzを解凍して…としてもいいのですが、actions-setup-tfcmtを利用します。

インストールするtfcmtのバージョンを4.6.0と指定しています

 

そして、terraform planを実行するパート。

tfcmt planコマンドを実行すると、planとその結果をコメントしてくれます。

使用するにはGitHubのトークンを渡す必要があるので環境変数に定義しておきます。
GITHUB_TOKENは自動で生成され、シークレットに格納されるので指定するだけでOK!

patchオプション:すでにコメントがありCIが再実行された場合それが更新されます

 

–(ダブルダッシュ)の後に terraform planを指定します。

ここでは、-input=falseといったterraform planのオプションを指定できます

 

動作確認

 

動作確認のため、↓のようにS3を作成するコードを用意しました。

 

これをもとにPRを作成すると….

Planの結果をコメントしてくれました!

今回の場合だと何が作成されるかがぱっと見でわかるのでありがたい!!

CI link を押すとGitHub Actionsのログに飛べるのも便利

 

Planの結果に応じてPRにラベルもつけてくれます

  • :リソースの変更なし
  • :リソースの作成または更新
  • :リソースの削除

今回はS3を作成するので青色のラベルがついてます

ラベルはPR一覧にも表示されます

 

コードを変更してpushすると再度CIがはしりコメントが更新されます

 

参考記事

 

GitHub Actions で tfcmt を使って terraform plan の結果をコメントに貼り付ける
[AWS][Terraform][GitHub Actions]tfcmtでモノレポ環境の結果をプルリクエストのコメントに通知させる
久しぶりのブログですが、今月からお友達のエンジニアと一緒に輪読会を毎週やることにしました。今は「達人が教えるW…

 

コメント

タイトルとURLをコピーしました