GitHub ActionsでTerraformのCI/CD環境を作る
·1 分
目次
2020年5月8日時点で、GitHub Actions(setup-terraform)でTerraformのCI/CD環境を整備するときの備忘録。ほとんど公式ドキュメントと大差ない内容なので、細かい内容についてはHashiCorp公式をご参照ください。
やりたいこと #
- AWS向けに書いているTerraformのリポジトリのCD/CD環境を作成する
- プルリクエストが作成されたら、fmt -> validate -> planの順で実行する
- プルリクエストがmasterにマージされたらら、applyを実行する
使用するaction #
HashiCorpからsetup-terraformというactionが出ているので、これを用いてGitHub Actionsのworkflowを書きます。
なお、terraform-github-actionsはメンテが終了しています。
S3をbackendにしている場合の書き方 #
ほぼ公式ドキュメントに記載された例のままです。異なる点は以下の4点です。
- 環境変数の設定(AWSのクレデンシャル)
- terraform validateの追加
- Terraform Cloud周りの記述を削除
- 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