[レポート] Learn Lab: Test your Terraform configuration #HashiConf

Learn Lab: Test your Terraform configuration のセッションレポートです。触る前はインフラの単体テストのみを想定していたのですが、HTTP ステータスコードを確認するような動きも可能で、色々出来そうだなと感じました。
2023.10.12

こんにちは!AWS 事業本部コンサルティング部のたかくに(@takakuni_)です。

サンフランシスコで開催されている HashiConf 2023 に参加しています。

本記事は HashiConf 2023 のセッション「Learn Lab: Test your Terraform configuration」のセッションレポートです。

セッション概要

Terraform 1.6 lets you write unit and integration tests for your configuration and run them before deploying infrastructure, with the new “terraform test” command.

In this Learn Lab, you will write tests using the new test file syntax. Then you will develop your own testing strategy using the many ways Terraform supports deployment validation: check blocks, preconditions, postconditions, and now tests.

シナリオ

シナリオは以下の通りです。

  • 静的ホスティングが有効な S3 バケットおよび、ソースをデプロイするモジュールの確認
  • ヘルパーモジュールを追加し、テストの実行
  • Terraform Cloud へモジュールを公開
  • Terraform Cloud 上でテストの実行

ワークショップの内容

ワークショップでは、はじめに Test の機能を紹介がありました。(機能の紹介以外にも、今回の機能が実装される前の歴史 の話など。)

その後、以下のチュートリアルを進めていくような流れのセッションでした。チュートリアルはパブリックに公開されているものなので、誰でもチャレンジできます。

感想

私自身 Test 機能を触るのが初めてで、シンプルに勉強になりました。また、 セッション前後で Test 機能のイメージがガラリと変わり大変面白かったです。

セッション前のイメージ:想定した値の範囲内で、設定値が入力されているかどうか(単体テストのようなパラメーターの確認レベル)

セッション後のイメージ:上記のテストに加え、結合テストの一環で行われるような、デプロイしたリソースに対しての HTTP ステータスコードの確認も可能。(テスト用にリソースを作成可能で、デプロイ前に確認できたりする。)

その他、Terraform Cloud と統合し、プライベートモジュールのテスト自動化がとても印象的でした。コミットごとに、モジュールのテストが自動実行され、とても印象的でした。また、terraform test -cloud-run を利用してマージ前のローカルのコードでテスト実行するような事も可能で、安全にモジュールを管理していく機能が充実しているなと思いました。

終わりに

以上、簡単ではありますが、「Learn Lab: Test your Terraform configuration」のセッションレポートでした。

インフラの単体テストのみならず、結合テストのようなことも可能で、とても便利な機能だなと思いました。HTTP のステータスコードチェック以外にも、いろんなアイデアができそうで大変楽しみです。

この記事がどなたかの参考になれば幸いです。

AWS 事業本部コンサルティング部のたかくに(@takakuni_)でした!