はじめに
ITエンジニアが業務に集中できないくらいに世間は賑わっています。
自分もその影響を多分に受けている @___nix___ です。
背景
Terraform は皆さんお使いの方お多いかと思います。
しかしながら、terraform のバージョンをまだ手で切り替えながら作業している方も見受けられます。
tfenv を使って環境依存が発生しないよう環境を整えておきましょう。
今更感の方はここでそっとブラウザを閉じて頂いても大丈夫です。
概要
Terraform ではバージョンを切り替える為に tfenv というツールがあるのは皆さんもご存知かと思います。
この Terraform のバージョンを一度決めてしまえば気にせず使え、バージョンの異なる環境やワークスペースであっても意識する必要が無くなります。
今回、このツールを Cursor に導入し、Terraform 環境を最適化します。
何が嬉しいのか
- tfenv の利用がルール化されていれば、以下のような記述は不要です。(書いても良いけど管理箇所が増える)
terraform { required_version = "1.x.x"
- tfenv コマンドは覚えなくて良いし、意識する必要が無い。
tfenv install ... tfenv use ... tfenv list
- ワークスペースで terraform バージョンを意識しなくて良い。
「このワークスペースでは x.x.x で動いてるから tfenv use x.x.x を実行しないと」が不要
導入
ダウンロード
まずは tfenv から zip でも git clone でも良いので、 C:\Users\{user}\.tfenv
以下に展開しましょう。
C:\Users\{user}\.tfenv
配下が以下のようになるように配置してください。
.github/
bin/
lib/
...
README.md
環境変数の設定
- Windowsの「スタートメニュー」を右クリックし、「システム」を選択します。
- 左側のメニューから「システムの詳細設定」を選び、「環境変数」をクリックします。
- 「ユーザー環境変数」セクションで Path を選択し、「編集」をクリックします。
- 「新規」をクリックし、C:\Users{user}.tfenv\bin を追加します。
確認
念の為 Cursor(VSCode) を再起動してターミナルで確認してみます。
$ tfenv --version
tfenv 3.0.0
実践
-
Terraform のコードを準備します。
backend.tfterraform { backend "local" {} } provider "aws" { region = "ap-northeast-1" }
-
バージョンを決めます。
ここは安全に 1.10.3 にします。(ここは心に決めるだけでOK)$ tfenv list-remote | head 1.11.0-alpha20241218 1.11.0-alpha20241211 1.11.0-alpha20241106 1.10.3 1.10.2 1.10.1 1.10.0 1.10.0-rc3 1.10.0-rc2 1.10.0-rc1
-
バージョンを固定します。
決めたバージョンを.terraform-version
に記載します。.terraform-version1.10.3
-
terraform init を実行します。
これでこの環境は勝手に terraform 1.10.3 で動くことになります。
別のワークスペースに移動して terraform コマンドを実行する時も.terraform-version
のファイルを読み込み、自動でそのバージョンを取得して利用してくれます。 -
バージョンを上げた場合は?
.terraform-version
に変更があった場合は terraform init を実行すれば指定したバージョンに変更されます。(-upgrade
オプションが必要なケースもあります)
終わりに
意外と色々な企業さんで仕事をしていると、この辺りの環境設定はマチマチで tfenv を利用していないケースも少なくありません。
少しでもルール化することで環境差異を無くし、楽が出来る環境を整えておくことをお勧めします。
HCP Terraform(Terraform Cloud) を併用しているケースだと、terraform バージョンを指定するので .terraform-version
に記載したバージョンと合わせておきましょう。
一言
年の瀬に、基本的な環境設定の内容でしたが、少しでも参考になれば幸いです。
この記事良かったと少しでも思って頂けたら是非 @___nix___ をフォローしてあげてください。或いは記事に対してリアクションをお願い致します。