技術(tech)

Terraform用のCI構築 – plan結果をPRのコメントに貼り付ける

はじめに

Terraformを利用している以上、planの実行結果を確認するフローをCIに組み込むことは避けては通れません。

"terraform-plan-comment"というモジュールを組み込むことで、PR上のコメントにTerafform planの実行結果を簡単に、分かりやすく出力出来るようになるので紹介します。

対象者

  • Terraformを利用している人
  • Terraform用のCIを構築している人
  • Terraform planの実行結果をPR上で確認できるようにしたい人

terraform-plan-comment の紹介

GitHub上のリポジトリはこちら
https://github.com/borchero/terraform-plan-comment

アウトプットのイメージとしては以下の通りです。

Terraform CLoud上から確認できるplanの実行結果と遜色がないくらいには分かりやすいです。

CIへの組み込み方

これはとてもシンプルです。
以下、該当部分のコードの抜粋です。

      # Run Terraform Plan
      - name: Terraform Plan
        run: |
          terraform plan -var="env=${{ matrix.env }}" -out=tfplan-${{ matrix.dir }}-${{ matrix.env }}.out
        working-directory: ${{ matrix.dir }}

      # Post results to PR
      - name: Post Plan Results to PR
        uses: borchero/terraform-plan-comment@v2
        with:
          token: ${{ github.token }}
          header: "terraform-plan Dir: ${{ matrix.dir }} (${{ matrix.env }})"
          planfile: tfplan-${{ matrix.dir }}-${{ matrix.env }}.out
          working-directory: ${{ matrix.dir }}

terraform plan実行時の実行結果を xxx.out ファイルに出力しておきます。
その結果をinputとして、このモジュールに渡すだけです。

PRのコメントのタイトルは header で設定可能です。

PRにコメントを投稿できる権限を付与したGitHubのtokenも一緒に渡す必要があります。

PRのcommitが進んでCIが再実行された場合には、自動的に既存のコメントをアップデートしてくれるので、コメントがダラダラと増え続けることもありません。

おわりに

このモジュールをメンテナンスしてくれている方々には感謝しかありません。
快適なTerraformライフを!