x.com/mizukmb github.com/mizukmb n ⽔尻 裕⼈ n 2020年6⽉ 弥⽣(株)転籍 n 2018年2⽉ (株)Misoca⼊社 n 弥⽣歴3年、Misoca開発歴6年のソフトウェアエンジニア n クラウド請求管理サービスMisocaのインフラ運⽤・SRE担当 n IaC歴 n Chef:2年ぐらい、オンプレサーバー構築やISUCON n Terraform:7年ぐらい、AWS環境構築
作成するリソースに対してテストコー ドが書ける機能 n terraform testを実⾏すると u 内部でapplyが実⾏される u 作成されたリソースに対してテストを実⾏ する u テストが終了すると作成したリソースを削 除する n applyからplanにすることもでき、この 場合はtfstateを読み込んでテストを実 ⾏する その前に、terraform testコマンドについておさらい terraform test AWS apply実⾏ テスト実⾏ 結果通知 destroy実⾏ AWS Cloud
値はmock側で⾃動⽣成 terraform testにmock機能が実装(v1.7の新機能) • Numbers will be 0. • Booleans will be false. • Strings will be a random 8-character alphanumeric string. • Collections, including sets, lists, and maps, will be empty collections. • Objects will contain all required sub-attributes generated using this same set of rules recursively. Tests - Provider Mocking | Terraform | HashiCorp Developer, https://developer.hashicorp.com/terraform/language/tests/mocking より引用
terraform_remote_state がS3バケットのアクセスを求めるためAWS認証情報が必 要 u terraform_remote_stateやめた n mockで⽣成したARN IDがバリデーションエラーに引っかかる u Error: “role_arn” (azga9se9) is an invalid ARN: arn: invalid prefix というエラーになる u ランダムなアルファベット8⽂字な⽂字列をmockが返すのが理由 u mock_resource や mock_data でバリデーションを通る⽂字列を返すように実装した 意外と通らない。mockの注意点
TerraformのTest mocking機能について紹介しました n v1.7の新機能で、mockを使うことでテスト実⾏をより柔軟にできます n 既存プロジェクトにmockを利⽤したテストを導⼊するときは⼀⼿間要るかもし れないです n mockは単体テストに利⽤するのがベストプラクティスっぽいです まとめ