メインコンテンツへスキップ

GitHub ActionsでTerraformのCI/CD環境を作る

·1 分

2020年5月8日時点で、GitHub Actions(setup-terraform)でTerraformのCI/CD環境を整備するときの備忘録。ほとんど公式ドキュメントと大差ない内容なので、細かい内容についてはHashiCorp公式をご参照ください。

やりたいこと #

  1. AWS向けに書いているTerraformのリポジトリのCD/CD環境を作成する
  2. プルリクエストが作成されたら、fmt -> validate -> planの順で実行する
  3. プルリクエストがmasterにマージされたらら、applyを実行する

使用するaction #

HashiCorpからsetup-terraformというactionが出ているので、これを用いてGitHub Actionsのworkflowを書きます。

なお、terraform-github-actionsはメンテが終了しています。

S3をbackendにしている場合の書き方 #

ほぼ公式ドキュメントに記載された例のままです。異なる点は以下の4点です。

  1. 環境変数の設定(AWSのクレデンシャル)
  2. terraform validateの追加
  3. Terraform Cloud周りの記述を削除
  4. Terraformバージョンの固定
name: "Terraform"

on:
  push:
    branches:
      - master
  pull_request:

jobs:
  terraform:
    name: "Terraform"
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.任意の名前 }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.任意の名前 }}
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup Terraform
        uses: hashicorp/setup-terraform@v1
        with:
          terraform_version: 0.12.24

      - name: Terraform Init
        run: terraform init

      - name: Terraform Format
        run: terraform fmt -check

      - name: Terraform Validate
        run: terraform validate

      - name: Terraform Plan
        run: terraform plan

      - name: Terraform Apply
        if: github.ref == 'refs/heads/master' && github.event_name == 'push'
        run: terraform apply -auto-approve

参考文献 #