terragrunt-actionを利用してgithub actionsでterragruntを簡単に利用する!

どもども、転職、副業に引っ越しに転職とてんやわんやの僕です。日々大変。

さて、今回はgruntwork社からリリースされているGitHub Actionであるterragrunt-actionを利用してワークフロー上でterragruntコマンドを実行してみようと思います。

シェルでインストールなどしなくてもお手軽にterragruntを利用できるので便利ですよ!

利用方法

他のAction同様、usesで指定するだけで利用できます。必要に応じてクラウドサービスの認証も行ってください!

name: "Terragrunt Apply Production"

on:
  push:
    branches:
      - main

env:
  TF_VERSION: '1.8.4'
  TG_VERSION: '0.58.2'
  WORKING_DIR: 'envs/production'
  AWS_ROLE_ARN: "arn:aws:iam::xxxxxxxxxxxxx:role/xxxxx-xxxx-xxxxxxxx"
  AWS_REGION: "ap-northeast-1"
permissions:
  id-token: write
  contents: read
  pull-requests: write
jobs:
  apply-production:
    name: "Apply Production"
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@main

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@master
        with:
          role-to-assume: "${{ env.AWS_ROLE_ARN }}"
          role-session-name: xxxxxxxxxxxxxxxxxx
          aws-region: "${{ env.AWS_REGION }}"

      - name: Terragrunt Apply Common
        uses: gruntwork-io/terragrunt-action@v2
        with:
          tf_version: ${{ env.TF_VERSION }}
          tg_version: ${{ env.TG_VERSION }}
          tg_dir: ${{ env.WORKING_DIR }}
          tg_command: 'run-all apply'

上記の例ではenvs/production以下のAWSリソースをterragrunt run-all applyで一括デプロイしています。

また、例えば以下のようにtg_commentを1に設定することでPRコメントにplan結果を表示できたりもします。

      - name: Terragrunt Plan Staging
        uses: gruntwork-io/terragrunt-action@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tf_version: ${{ env.TF_VERSION }}
          tg_version: ${{ env.TG_VERSION }}
          tg_dir: ${{ env.WORKING_DIR }}
          tg_command: run-all plan
          tg_comment: 1

このようにPRにコメントが表示されます。run-allの場合は並列実行なので相変わらず出力されるログはチグハグです。

まとめ

今回はterragrunt-actionを紹介いたしました。

従来の方法よりもシンプルで使いやすいなというのが個人的な感想です。
僕の技量不足かもですがtfcmtを利用したPRコメント出力がうまくいかなかったのがちょっと残念…。

terragruntをお使いの方は是非試してみてください。

ここまで読んでいただきありがとうございました!

Terraform

Posted by CY