何が起こったか
ある日、githubからAWSをterraformで構築するリポジトリをcloneしたときのこと。
terraform init
を実行するとエラーが出ました。
│ Error: Unsupported Terraform Core version
│
│ on version.tf line 2, in terraform:
│ 2: required_version = "1.8.1"
│
│ This configuration does not support Terraform version 1.9.1. To proceed, either choose another supported Terraform version or update this
│ version constraint. Version constraints are normally set for good reason, so updating the constraint may lead to other errors or unexpected
│ behavior.
原因
cloneしたリポジトリ内のterraformのバージョンでは1.8.1を指定していたが、筆者の環境がterraformの1.9.1を指定していたのでエラーが出ていた。
解決策
1 terraformのバージョンを確認
terraform --version
2 tfenvでterraformのバージョンを切り替える
tfenv use 1.8.1
3 terraform initを再度実行
※そもそも、使用したいterraformのバージョンをinstallしていなかった場合は下記のコマンドでinstallします。
tfenv install 1.8.1
余談
terraformのバージョンをディレクトリ毎に管理する方法もあります。
terraformのバージョンを固定したいディレクトリに移動して以下コマンドを実行します。
echo 1.8.1 > .terraform-version
.terraform-versionファイル内に使用したいterraformのバージョンを記載することで、そのディレクトリ内でのみバージョンを固定することができます。
例えば、基本的には1.9.1を使用したいが、チーム内では1.8.1を使用している場合などがあるかと思います。
terraformはバージョンによって挙動が変わる場合もあるので、チーム内でそれぞれが別のバージョンを使用すると予期せぬエラーが起きる場合もあるため、基本的にはバージョンを固定している印象があります。
また、~を使用して、このバージョン以降ならOKみたいなこともできます。
終わりに
避けては通れないバージョン管理の問題。
terraformは結構バージョン関連でエラー出やすいので参考になりますと幸いです。