Terratest使う
TerraformのテストコードをGo言語で書けるものらしい
面白そうなので使ってみる
terratest.gruntwork.io
main.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.16"
}
}
required_version = ">= 1.2.0"
}
provider "aws" {
region = "ap-northeast-1"
}
resource "aws_s3_bucket" "b" {
bucket = "usualmoon3700-terratest"
tags = {
Name = "My bucket"
Environment = "Dev"
}
}terraform_test.go
package test import ( "testing" "github.com/gruntwork-io/terratest/modules/aws" "github.com/gruntwork-io/terratest/modules/terraform" ) func TestTerraform(t *testing.T) { terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{TerraformDir: "../examples"}) defer terraform.Destroy(t, terraformOptions) terraform.InitAndApply(t, terraformOptions) aws.AssertS3BucketExists(t, "ap-northeast-1", "usualmoon3700-terratest") }
usualmoon3700-terratestというS3バケットを作成し、それが存在するか確認するだけ
実行してみる
$ go test TestTerraform 2022-11-27T07:54:24+09:00 retry.go:91: terraform [init -upgrade=false] ~~なんかいっぱいでる~~ PASS ok github.com/usualmoon3700/terratest 8.093s
モジュールが充実してて結構簡単に書ける