Actions&Terraform

tfenvで複数のTerraformバージョンを使い分ける

「fmt を実行しようとしたらバージョンが異なっていてエラーになった」

「古いバージョンが使われていて、定義されている構文が対応してないよ・・・」

Terraform を使っていて、バージョン違いによってエラーが出たことはないでしょうか。

例えば v0.11.x でエラーが出るなら v0.12.x にしたらいいのでは?っと思うかもしれませんが、Terraform は気軽にバージョンアップできないのも事実。

特に数年経過したようなプロジェクトに携わっている場合、利用している Terraform のバージョンが古いままというケースも珍しくありません。

今回は、ローカル環境で簡単に Terraform のバージョンを切り替える方法を紹介します。

tfenvとは

どのモジュールにおいても、複数バージョンを使い分けたいという需要は多く、例えば Java(JDK)や NodeJS、Python でも簡単に切り替えるライブラリが用意されていたりします。

Terraform も同じく、tfenv というモジュールが用意されていて、複数バージョンを気軽に切り替えることができるのです。

最新バージョンは 2020 年 4 月にリリースされた 2.0.0 になります。
(2021 年 1 月時点)

tfenvのインストール

では早速、Mac のターミナルで実行してみましょう。今回は楽して brew でインストールしちゃいます。

バージョンを確認してみます。最新バージョンですね。

Terraformのインストール

では、tfenv を使って Terraform の 0.11.7 をインストールしてみます。

今回は手元の環境のバージョンに合わせたかったので 0.11.7 としましたが、このバージョンにこだわる必要はありません。

インストールされている一覧を確認してみるとエラーが・・・。

デフォルトで利用するバージョンが指定されていないからエラーが出たようですね。

エラーメッセージの最後に tfenv use しろと書かれています。

一覧に出てきました。

では、次に 0.12.14 も入れてみましょう。

Terraformのバージョン切り替え

一覧に 0.12.14 が増えているハズなので早速確認してみましょう。

利用するバージョンを 0.12.14 に切り替えてみます。

一覧を確認すると、0.12.14 が対象に切り替わっていますね。

もちろん terraform コマンドでバージョン確認しても想定通りです。

0.11.7 に戻してバージョン確認してみます。

バージョンの切り替えを自動化

いちいち tfenv use でバージョン指定するのも面倒ですよね。

そんな場合は、該当のディレクトリに .terraform-version というファイルを作成しておけば自動的に指定バージョンに切り替えてくれます。

チームで開発している場合は、他の人のためにもリポジトリにコミットしておくといいでしょう。

リビジョン(ビルド)がチームメンバーによって異なるかもしれないので、指定したマイナーバージョンの最新を使うようにしておいてもいいかもしれませんね。

詳しくは公式のヘルプを確認してみてください。

まとめ

tfenv を使って、ローカルで複数の Terraform バージョンを扱えるようにしました。

Terraform 自体は 2021 年 1 月時点で、0.14.4 が最新バージョンとなっています。

今回紹介した 0.11.x や 0.12.x も既に古くなっていますが、インフラ環境を支える重要なツールになるので、バージョンアップは慎重に行いたいですね。