Terraform 0.14からDependency Lock File が導入されました。
そのためTerraformのproviderを更新する際にこちらのlock file (.terraform.lock.hcl
) も更新する必要があります。
SEQSENSEでは Renovate を使ってライブラリアップデートを行っていますが*1、Terraformのproviderのバージョンアップは対応しているものの、lock fileの更新は2021/6/6時点でまだ未対応です。
そのため、RenovateのPRが作成された後にlock fileを更新してpushするGitHub Actionを作成しました。
以下の設定をすると、RenovateのPRが作成された際に、.terraform.lock.hcl
を検知して更新したものをpushしてくれます。
name: terraform-lock-fix on: push: branches: - renovate/* jobs: terraform-lock-fix: runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v2 with: fetch-depth: 2 - name: fix uses: seqsense/terraform-lock-fix-action@v0 with: git_user: @@MAINTAINER_NAME@@ git_email: @@MAINTAINER_EMAIL_ADDRESS@@ github_token: ${{ secrets.GITHUB_TOKEN }} commit_style: squash push: force
余談
Terraformのproviderのバージョン指定は範囲指定など柔軟にできるようになってますが (参考)、Renovateを使う場合、次のバージョンの検知はRenovateが勝手にやってくれるので、Renovate外での不要な更新を避けるために固定バージョンでやるのが良いと思います。
terraform { required_providers { aws = { source = "hashicorp/aws" version = "3.44.0" // version = "~> 3.0" } } }