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

May 08, 2020

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

参考文献

  • hashicorp/setup-terraform - Terraform by HashiCorp

https://www.terraform.io/docs/github-actions/setup-terraform.html

  • (メンテ終了)Teraform GitHub Actions - Terraform by HashiCorp

https://www.terraform.io/docs/github-actions/index.html

  • Using environment variables - GitHub Help

https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables


Profile picture

Written by capytan ソフトウェアエンジニアです。技術のことや日々のことを書きます。 @capytan_el34