🔖

GitHub ActionsでTerraformの初期化~確認を実行するためのワークフローを作成

2023/05/31に公開

はじめに

GitHub Actionsを用いて、TerraformのCIを実行できるようにします。
内容としては、本番環境に変更を加える前の確認迄になります。

前提

  • インフラ基盤はAWSを使用
  • Terraformのコードに関しては用意済み
  • GitHub Actions にてOIDCを使用したAWS認証ができるよう設定済み

https://zenn.dev/kou_pg_0131/articles/gh-actions-oidc-aws

イメージ

今回作成するワークフロー

リポジトリのルートディレクトリの .github/workflow 直下に以下ファイルを作成します。

.github/workflow/terraform-ci.yml
name: terraform-ci

on:
  push:
    branches:
      - '!master'
      - '*'

permissions:
  id-token: write
  contents: read

jobs:
  terraform:
    name: Terraform
    runs-on: ubuntu-latest

    defaults:
      run:
        shell: bash
    steps:
      - name: Checkout
        uses: actions/checkout@v3   

      - name: confiture AWS credentials
        uses: aws-actions/configure-aws-credentials@v2
        with:
          aws-region: ${{ vars.AWS_DEFAULT_REGION }}
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}

      - name: Setup Terraform
        uses: hashicorp/setup-terraform@v2

      - name: Exec Terraform init
        run: |
          terraform init

      - name: Exec Terraform fmt check
        run: |
          terraform fmt -recursive -check

      - name: Exec Terraform validate
        run: |
          terraform validate

      - name: Exec Terraform plan
        run: |
          terraform plan

以下については、GitHubの対象リポジトリの「Secrets and variables」に設定しております。

  • AWS_DEFAULT_REGION
  • AWS_ROLE_ARN

場所
SettingsSecrets and variablesActionsRepository secrets

参考記事

https://docs.github.com/ja/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services

https://zenn.dev/kou_pg_0131/articles/gh-actions-oidc-aws

https://zenn.dev/nameless_gyoza/articles/github-actions-aws-oidc-by-terraform

Discussion