👨🔧
.terraform-versionファイルでsetup-terraformアクションのバージョンを指定する方法
この記事はterraformのカレンダー | Advent Calendar 2023 - Qiitaの6日目の記事です。
解決したい課題
terraformのバージョン管理にtfenvを使っているが、バージョンアップの時に .terraform-version
ファイルに加えてGitHub Actionsのワークフローファイル内の記述も更新する必要がある。
手間を減らし更新忘れを防ぐため、バージョンの記述を一元化したい。
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: 1.6.5
解決策
Get terraform version · Actions · GitHub Marketplaceを使います。
記述例
- name: Get Terraform version
id: terraform-version
uses: bigwheel/get-terraform-version-action@v1.2.0
with:
path: ${{ inputs.working-directory }}
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: ${{ steps.terraform-version.outputs.terraform-version }}
このActionを使用するのではなく、Add support for `.terraform-version` file · Issue #298 · hashicorp/setup-terraformで紹介されているように単に cat path/to/.terraform-version
とする方法もあります。
その方法と比べてこのActionが優れているのは、tfenvの挙動とできる限り似せた挙動を取っていることです。
これにより .terraform-version
内のバージョン指定が正規表現でも対応できたり、 .terraform-version
ファイルの位置が変わっても、ワークフローのyamlを書き換える必要なく、terraform
コマンドの実行ディレクトリから順に親ディレクトリをたどって探してくれる、といった tfenv
互換の挙動を取ってくれます。
Discussion