ブログを書くのを最近サボってしまっていたので、2日連続でブログを書いています。
さて、今日はちょっとした困りごとを解決した時のブログです。
前にterraform のライセンスが変わったことは皆さんもうご存知かと思います。開発者自体には直接影響はないみたいですが、この記事によるとwrapper やSass を作ってそこでterraform を利用する場合は影響があるみたいですね。
Our approach has enabled us to partner closely with the cloud providers to enable tight integration for our joint users and customers, as well as hundreds of other technology partners we work closely with. However, there are other vendors who take advantage of pure OSS models, and the community work on OSS projects, for their own commercial goals, without providing material contributions back. We don’t believe this is in the spirit of open source.
https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license
https://zenn.dev/sabiuyack/articles/31e7712574acdc
要約すると、せっかくOSS で提供しているのにもかかわらず、contribution なしに自分たちで勝手に商用の目的のために使うのはダメだよ、っていう意味だと思います。それはOSS の精神に反するよねーーって。
こんな背景もあってか、opentofu が出てきたみたいです。私自身も流行に乗っていこうということで、opentofu をインストールしました。そして、terragrunt もなんか便利そうだから使ってみるかと思いまして、早速実行してみました。(ちなみに普段はterraform 使っているので、terraform とopentofu の両方が入ってます)
terragrunt を実行する時の参照が、、
terragrunt を実行した時の参照が何故か、opentofu ???
15:40:27.282 STDOUT [s3_bucket] tofu: │ Error: Unsupported OpenTofu Core version
15:40:27.282 STDOUT [s3_bucket] tofu: │
15:40:27.282 STDOUT [s3_bucket] tofu: │ on _terraform.tf line 3, in terraform:
15:40:27.282 STDOUT [s3_bucket] tofu: │ 3: required_version = "1.9.5"
ちなみに それぞれのバージョンですが、以下です。terragrunt をそれぞれのバージョンで使うには互換性のあるterraform とopentofu のバージョンを使わないといけないので、そこは注意です。
参照記事:

terraform -v
Terraform v1.9.5
on linux_amd64
tofu -v
OpenTofu v1.8.1
on linux_amd64
terragrunt -v
terragrunt version v0.67.1
今回はterraform を使おうと思い、terraform の定義しているtf ファイルにも以下のように記述しました。
terraform {
required_version = "1.9.5"
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.33.0"
}
}
}
解決方法
なので、opentofu が参照されているのをどうにかして、terraform にしないといけないです。
現状の参照方法を確認しようと思って、このコマンドを実行することで確認できるみたいです。
terragrunt terragrunt-info | grep TerraformBinary
=> "TerraformBinary": "tofu",
実際にtofu になってますね。これを解決するには、以下のコマンドで変えます。
# home dir に戻る
cd
# 確認
pwd
=> /home/<your user name>
# tfpath の指定
echo 'export TERRAGRUNT_TFPATH=terraform' >> ~/.bashrc
# 設定の反映
source ~/.bashrc
# もう一回telemetory の確認
terragrunt terragrunt-info | grep TerraformBinary
"TerraformBinary": "terraform",
これでterraform を使用することができるようになります。
自分のWSL などの環境に色々入れていると結構混じってしまうので、少しややこしいですが、
両方使えるようになっているので、便利でもあります。opentofu もterraform も極めて、良い IaC ライフをお過ごしください。
コメント