久しぶりのブログですが、今月からお友達のエンジニアと一緒に輪読会を毎週やることにしました。今は「達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践を読んでいますが、初心者である程度サーバーの経験がある方でも学べる本となっているので、パフォーマンス/チューニングの方法を学ぶにはベスト本ですね。以下は個人的にオススメの参考書をまとめておりますので参考に。

https://adachin.kibe.la/shared/entries/5a3d446b-4751-47d3-887e-69d988c1a101

雑談をしていく中でTerraformで利用できるCLIツールの tfcmt が超便利ということを知ったのでご紹介したいと思います。


tfcmtとは

https://github.com/suzuki-shunsuke/tfcmt

開発者は@szkdashで、tfcmtはterraform planやterraform applyの結果をGitHubのコメントとして通知するCLI ツールです。以前Terraform CI/CDをGItHub Actionsで実装しましたが、毎回ActionsからCIの結果を見に行くのが面倒で、プルリクから待っていればコメントに通知されて非常に便利で見やすく、内部監査としてもプルリクエストを見ればいつTerraformを実行しているかを証跡として管理することができます。

以下のコードを元に早速導入してみましょう。

[AWS][OIDC]Terraform CI/CD環境をGitHub Actionsで作ってみた


環境

  • Terraform構成

構成としてはモノレポでstg、prdでディレクトリを分割して運用している状態です。


GitHub Actions

  • .github/workflows/stg_terraform-ci.yml

17行目でプルリクエストの書き込み権限を記載しましょう。43行目ではtfcmtをshmokmt/actions-setup-tfcmtを利用してインストールをします。wgetして展開するよりは可読性良くなりますね。

https://suzuki-shunsuke.github.io/tfcmt/getting-started/#monorepo-support-target-variable

66行目で実際にtfcmtコマンドを使ってterraform planしていくわけですが、今回はstgとprdが別ディレクトリで管理しているため、 varでターゲットを指定しないと片方の関係しか通知通知が来ません。そこで、 引数で対象となる特殊変数を指定することで実行されるようになります。今回はstgなので、 -var "target:stg" を追加します。 -patch は既存のコメントを上書きしてくれるので必須にしましょう。 GITHUB_TOKEN はGitHub側で自動生成するので、こちら側は特に設定する必要はありません。

  • .github/workflows/stg_terraform-cd.yml

apply用のyamlファイルも基本planと変わらずといったところですね。prdのplanやapplyは以下となります。

  • .github/workflows/prd_terraform-ci.yml

  • .github/workflows/prd_terraform-cd.yml


動作確認

  • stg plan(適当にセキュリティグループの差分を作ります)

  • prd apply

環境ごとに通知が来ているので完璧です!


まとめ

モノレポでもtfcmtを利用してコメントを通知できました。超便利なので皆さんも利用してみてください!個人のCircleCIも導入しなければ..思ったのはModule化している場合だとプルリクエストにむちゃくちゃコメントされそうな予感。昔はtfnotifyがあったけどバージョンアップされてるのかな!?



adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください