miseでTerraformを使う際のparse-legacy-fileエラーとその解決方法
はじめに
こんにちは、データ事業本部の渡部です。
最近miseを使いつつTerraformを触り始めたのですが、versionの表記によるエラーに遭遇したので、備忘的に書き残しておこうと思います。
環境
- 開発環境のセットアップツール:mise
- mise version:2025.3.11
- miseで指定するTerraform version:1.11.2
エラー内容
Terraformのmain.tfが配置されているディレクトリにcdすると以下のようなエラーが出力されました。
❯ cd ~
mise ERROR error parsing config file: ~/main.tf
mise ERROR ~/.local/share/mise/plugins/terraform/bin/parse-legacy-file exited with non-zero status: no exit status
mise ERROR command ["/Users/username/.local/share/mise/plugins/terraform/bin/parse-legacy-file", "/Users/username/main.tf"] exited with code 1
mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
main.tfの内容は以下です。
terraform {
# Terraformのバージョン制約
required_version = "~> 1.11.0"
# 必要なプロバイダーとそのバージョン
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.93.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "sample_bucket" {
bucket = "cm-watanabe-sampleple"
force_destroy = true
}
解決法
~/.config/mise/config.toml
に以下を追記しました。
[settings]
idiomatic_version_file_disable_tools = ['terraform']
エラー内容にあるparse-legacy-file
を無視するという内容の設定となります。
parse-legacy-file
の中身を確認してみると、=
以外はサポートしてないからエラーになるって書いてますね。
is_strict_equality_version_constraint() {
local -r version_constraint="$1"
grep --quiet -E '^=?[[:digit:]]+\.[[:digit:]]+.[[:digit:]]+' <<<"${version_constraint}"
}
〜〜〜(省略)〜〜〜
if is_strict_equality_version_constraint "${required_version_constraint}"; then
tr -d '=' <<<"${required_version_constraint}"
else
cat >&2 <<EOF
FATAL: Found legacy version file '${ASDF_HASHICORP_TERRAFORM_VERSION_FILE:-main.tf}' with unsupported required
version constraint expression: '${required_version_constraint}'. This
plugin only supports strict equality.
今回はTerraformブロック内のバージョン指定で~>
と記載していたので、~
には対応していないからエラーとなっていたということのようです。
=
にしてもエラーは解消すると思いますが、それではやりたいことが実現できないので、~/.config/mise/config.toml
にparse-legacy-file
を無視する設定を追記した次第でした。
Terraform以外の他の言語についても、無視して問題ないよってことであれば、以下を記載すればOKのようです。
idiomatic_version_file = false
振り返るとTerraform以外でも案外よく発生するエラーなのかなって気はしました。
参考資料