WSLではじめるTerraform

Windows11 Pro
WSL Ubuntu 22.04
この記事ではTerraforを使えるようにするための準備について紹介しています。
WSLを使用していますが、WSL自体のセットアップには触れていませんのでご了承ください。
また、ubuntu20.04などのサポートが切れているディストリビューションではTerraformがインストールできないようなので気を付けて下さい。
tenvのインストール
terraformは直接インストールせず、まずはバージョン管理ができるtenvをインストールします。その後、tenvを使用してterraformをインストールします。
tenvのインストールは以下の手順で行います。
後に使用するURL取得コマンドでjqが必要なため事前にインストールします。
sudo apt update && sudo apt install -y jq
最新バージョンのtenvのDibianパッケージURLを取得します。
TENVDebURL=$(curl -s https://api.github.com/repos/tofuutils/tenv/releases/latest \
| jq -r '.assets[] | select(.name | test("amd64\\.deb$")) | .browser_download_url')
取得したURLから.debをダウンロードします。
curl -L -o /tmp/tenv_latest_amd64.deb "$TENVDebURL"
ダウンロードした.debをインストールします。
sudo dpkg -i /tmp/tenv_latest_amd64.deb || sudo apt -f install -y
最後にバージョンを確認するコマンドを入力し、バージョンが表示されればインストールは完了です。
tenv version
terraformのインストール
tenvを使用してterraformをインストールします。
特に決まったバージョンがなければ現行の最新安定バージョンをインストールするのが良いと思います。
tenv tf install
インストールしたterraformバージョンを使用する設定を行います。
tenv tf use 【バージョン(例 1.13.0)】
設定がうまくいっているか確認します。以下コマンドの結果、指定したバージョンの左に「*」が表示されていればOKです。
tenv tf list
タブ補完の有効化
初期状態ではterraform、tenvともに補完が効かない状態なのでタブ補完できるようにしましょう。
まずはbash_completionのインストールとディレクトリの作成です。
sudo apt install -y bash-completion && \
sudo mkdir -p /etc/bash_completion.d
Terraformコマンドのタブ補完の設定を行います。
echo 'complete -C terraform terraform' | sudo tee /etc/bash_completion.d/terraform >/dev/null
続いてtenvの設定です。
tenv completion bash | sudo tee /etc/bash_completion.d/tenv > /dev/null
プロバイダー実行ファイルを共有する
terraformは初期化コマンドを実行した際ディレクトリに.terraformディレクトリを作成します。
このフォルダ内に作成されるプロバイダー実行ファイルがなかなかの容量なので、すべてのプロジェクトで共有できるよう事前に設定していきます。
まず共有キャッシュ用ディレクトリを作成します。
mkdir -p "$HOME/.terraform.d/plugin-cache" && \
chmod 700 "$HOME/.terraform.d" "$HOME/.terraform.d/plugin-cache"
terraformのCLI設定ファイルを作成し共有キャッシュを使用するよう記述していきます。
cat > "$HOME/.terraformrc" <<'EOF'
# 共有キャッシュを使用
plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"
EOF
VSCodeでの準備
tfファイルの編集にはVSCodeを使用します。
まず以下の拡張機能をインストールしましょう。
- WSL

続いてctrl + shift + p
でコマンドパレットを開き「wsl」と入力します。
「ディストリビューションを使用してWSLに接続」をクリックし、ディストリビューションを選択すれば接続できます。

接続出来たら必須ではありませんが、以下2つの拡張機能を追加でインストールしておくと良いです。
- HashiCorp Terraform
- gitignore
おわりに
業務などではtfstateファイルはクラウドに置くなど追加の作業もありますが、個人の学習用途ではとりあえずここまですれば十分かと思います。