Windows(Scoop、Choco、手動バイナリ)で OpenTofu と Terraform を共存、あるいは個別に環境構築する方法を解説します。
基本的にはどちらもGo言語で書かれた単一のバイナリ(.exe)であるため、構築手順はほぼ同じです。ただ、コマンド名(tofu と terraform)が異なるため、両方を同じPCに入れて同時に使い分けることも簡単です。
1. パッケージマネージャーを使う方法(推奨)
Windowsのパッケージマネージャー(Scoop または Chocolatey)を使うのが最も手軽で、アップデートも簡単です。
パターンA:Scoop を使う場合
開発者に最も人気のある方法です。
- OpenTofu のインストール:PowerShell
scoop bucket add opentofu scoop install opentofu - Terraform のインストール:PowerShell
scoop install terraform
パターンB:Chocolatey を使う場合
管理者権限のPowerShellで実行します。
- OpenTofu のインストール:PowerShell
choco install opentofu - Terraform のインストール:PowerShell
choco install terraform
2. 手動でバイナリを配置する方法(インストーラーなし)
社内セキュリティ等の関係でパッケージマネージャーが使えない場合は、公式から .zip をダウンロードして配置します。
ステップ 1: ダウンロード
- OpenTofu: 公式GitHub Releases または公式サイトから
tofu_X.X.X_windows_amd64.zipをダウンロードします。 - Terraform: HashiCorp公式サイト から Windows版の
.zipをダウンロードします。
ステップ 2: 配置と環境変数 (Path) の設定
- 任意の場所にフォルダを作成します(例:
C:\tools\tf-tofu\)。 - ダウンロードした zip から
tofu.exeとterraform.exeをそのフォルダに解凍します。 - Windowsの環境変数
PathにC:\tools\tf-tofu\を追加します。- PowerShellで即時反映・追加する場合(管理者権限):PowerShell
[Environment]::SetEnvironmentVariable("Path", $Env:Path + ";C:\tools\tf-tofu", "User")
- PowerShellで即時反映・追加する場合(管理者権限):PowerShell
3. 動作確認
ターミナル(PowerShell や コマンドプロンプト)を再起動し、以下のコマンドが通れば成功です。
PowerShell
# OpenTofuの確認
tofu --version
# Terraformの確認
terraform --version
4. 複数バージョンを切り替えたい場合(応用)
プロジェクトによって「Terraformの1.5.x系を使いたい」「OpenTofuの1.8系を使いたい」といったバージョンの切り替え(マネジメント)が必要な場合は、以下のツールを導入すると便利です。
- Tenenv (旧 tfenv / tofuenv の統合版)
- OpenTofu、Terraform、Terragrunt のすべてのバージョンを1つで管理できる最もおすすめのツールです。
- Scoopでインストール可能:
scoop install tenenv - 使い方例:PowerShell
tenenv tofu install 1.8.1 tenenv tofu use 1.8.1 tenenv tf install 1.5.7 tenenv tf use 1.5.7
💡 構築後の注意点(エイリアスについて)
OpenTofuはTerraformと完全互換を目指してフォークされたため、既存のTerraformコード(.tf ファイル)をそのまま tofu init / tofu apply できます。
もし「使い慣れた terraform コマンド(または tf)で OpenTofu を動かしたい」という場合は、PowerShellのプロファイル($PROFILE)にエイリアスを設定しておくと快適になります。
PowerShell
# PowerShellでOpenTofuを「tf」で呼び出す例
Set-Alias -Name tf -Value tofu
OpenTofuとTerraform(v1.6以降)はライセンスの変更(BSL化)を機に機能の分岐(フォーク)が始まっています。 AWS環境の要件に合わせて選ぶのが最適です。
| 選択肢 | メリット | デメリット | こんな場合におすすめ |
| OpenTofu (オープンソース) | * 完全にオープンソース(Linux Foundation管理) * removed ブロックの拡張など、OSSならではの独自進化が早い* AWS Providerの互換性は現状ほぼ100% | * 企業としての商用サポートがない * 将来的にHashiCorp独自の新機能(最新のHCL構文など)が使えなくなる可能性がある | * ベンダーロックインを避けたい * 完全なOSSとしてインフラを管理したい |
| Terraform (HashiCorp) | * 業界標準としての圧倒的な実績と情報量 * AWSの新機能への追従(AWS Provider)が最速かつ確実 * エコシステム(Terraform Cloud等)の連携が強力 | * ビジネス利用でのライセンス条項に注意が必要(競合サービスを提供する商業利用などの制限) | * インフラの安定性と実績を最優先したい * 将来的にTerraform Cloud等のマネージドサービスを使いたい |

コメント