皆様あけましておめでとうございます。
インフラ事業部のMです。
今回は、最近追加されたTerraformのテストモジュールについて触れたいと思います。
## Terraformについて
Terraformとは、HashiCorp社によって作成されたIaCのツールです。
主にクラウド系のインフラプロビジョニングに長けており、
AWSやAzure等のクラウドリソースの構築や管理が行えます。[プロバイダ一覧]
今見てみるともう3500を超えるプロバイダが提供されてるんですね。
かなり多くなりました。
## 構成
今回はAWSでやってみます。
VPCの中に2つパブリックサブネットを作って、
サブネットの数を数えてみることとします。
今回作るVPCはこんな感じ。
VPC内に1個だけパブリックサブネットを作ります。
作る環境のtfファイルを用意したら、`terraform test`でテストしてみましょう。
テストファイルはこんな感じ。
`hogehoge.tftest.hcl`のように、`tftest.hcl`で終わるファイルを読み込みます。
`command`には、`plan` か `apply` を入れることができます。
`plan`を指定することで、リソースを作らずにテストでき、
`apply`では、作成後でしかチェックできないリソースをテストすることができます。
`assert`ブロックには、テストしたい項目を書きます。
今回は、作るVPCの中にパブリックサブネットが2つ以上あるか、
Nameタグが空でないかをチェックしてます。
早速テスト。
`Name`タグが空でないのでそっちのテストはクリア出来ましたが、
サブネットが2つ以上定義されていないので、
`required_public_subnets_count_test`はエラーになることが確認出来ました。
では、エラーになったパブリックサブネットを2つ以上作って、
テストがパスするようにコードを書き換え、テストを再実行します。
こんな感じで、リソースを作る前に作成したtfファイルのテストが出来ました。
AWSに限らず、リソースをデプロイするのに時間がかかる物も多くあります。
テストモジュールが実装されたことによって、
terraformを書いている人には馴染みのあるHCLでテストが書けて、
ほかのテストツールをインストールすることなくテストできるのは魅力的ではあります。
`assert`ブロックに記述する条件のリファレンスのドキュメントとかが探しづらかったりするのが難点ではありますが、
その辺はそのうち改善なりされていくのかな~と思っています。
Terraformはリソースを作ったり消したりが楽で良いツールなので、
これでTerraformがもっと使いやすくなってくれると嬉しいです。
次回は、 `apply` した後に確認できる状態についてのテストをして、記事を書きたいと思います。