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