概要

Terraformを使っていてインデントがずれてしまうのを修正するのにterraform fmtというコマンドがある。
これを手元で都度やるのをよく忘れる。
忘れてそのままマージするのは宜しくないので、せめてCIでチェックできればと思い調べたところ、hashicorpの公式のterraformイメージがあった。
これを活用することで、CircleCIと連携して簡単にterraform fmtで差分が出てしまった箇所が検知できる。

version: 2
jobs:
  terraform:
    working_directory: ~/repo/terraform/
    docker:
      - image: hashicorp/terraform:0.11.8
    steps:
      - checkout
      - run:
          name: "terraform fmt"
          command: |
            terraform fmt -diff=true -check=true

workflows:
  version: 2
  terraform:
    jobs:
      - terraform

上記のように、terraform fmtにいくつかオプションを付けている。
-diffをtrueにすると差分が表示されるので、どこが修正されるかがわかる。
-checkをtrueにするとチェックだけを行い、差分が発生するとコマンドの返り値に3を返す。
CircleCIでコマンドの返り値が0と異なるとエラーになり、CIがこけるようになる。

ちなみに実行した際の結果はこちら。

#!/bin/sh -eo pipefail
terraform fmt -diff=true -check=true

diff a/terraform/variables.tf b/terraform/variables.tf
--- /tmp/875634021
+++ /tmp/774976384
@@ -1,6 +1,8 @@
 variable "aws_access_key" {}
 variable "aws_secret_key" {}
+
 variable "aws_region" {
   default = "ap-northeast-1"
 }
-variable "profile_name" {}
\ No newline at end of file
+
+variable "profile_name" {}
Exited with code 3

こんなのが画面で確認できるので、どこがおかしいかわかる。
出来れば自動的に修正させたいけど、それはまたいずれ。

<p style='padding: 5px;'>