macOS上で「GitHubの2つのアカウントを使い分けながら、OpenTofuとTerraformの両方を自在に扱える環境」を、最初から完全に整理した決定版の構築手順です。
今回は、OpenTofuとTerraformの両方を1つのツールでスマートに一元管理できる tenv というツールをベースに解説します。上から順番に進めれば、競合のない完璧な開発環境が完成します。
1. 開発環境の土台作り (Homebrew)
すべてのツールをインストールするためのパッケージ管理ツール「Homebrew」を導入します。
1-1. インストールコマンドの実行 ターミナルを開き、以下のコマンドを実行します。
Bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
※途中、Macのログインパスワードを求められます(画面には表示されませんが、入力してEnter)。
1-2. パス(Path)を通す インストール完了後、画面の指示に従って以下の2行を1行ずつ実行します(M1〜M4などのApple Silicon Macで必須)。
Bash
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
brew --version と叩いてバージョンが表示されれば土台は完了です。
2. OpenTofu & Terraform の一元管理 (tenv)
実務ではプロジェクトによって「OpenTofu」「Terraform」、さらにそれぞれの「バージョン」を使い分ける必要があります。これらを一括管理できる tenv を導入します。
2-1. tenvのインストール
Bash
brew install tenv
2-2. OpenTofu と Terraform のインストール 最新の安定版をそれぞれインストールし、デフォルトで使用できるように設定します。
Bash
# --- OpenTofu の設定 ---
tenv tofu install latest
tenv tofu use latest
# --- Terraform の設定 ---
tenv tf install latest
tenv tf use latest
2-3. プロジェクトごとのバージョン固定方法 特定のプロジェクトのディレクトリに移動し、バージョンを指定するだけで、そのフォルダ内だけ自動でバージョンが切り替わります。
Bash
cd /path/to/project
tenv tofu use 1.7.2 # このフォルダは OpenTofu 1.7.2 に固定
# または
tenv tf use 1.5.7 # このフォルダは Terraform 1.5.7 に固定
※コマンドを実行すると、フォルダ内に .tofu-version や .terraform-version というファイルが生成され、自動切り替えが有効になります。
3. GitHub 複数アカウントの自動切り替え設定
個人用(アカウントA)と仕事用(アカウントB)を、「フォルダの場所」によって自動で切り替える仕組みを作ります。
3-1. SSHキーの作成
Bash
# アカウントA用(メイン)
ssh-keygen -t ed25519 -C "account_a@example.com" -f ~/.ssh/id_ed25519_github_a
# アカウントB用(仕事用・サブ)
ssh-keygen -t ed25519 -C "account_b@example.com" -f ~/.ssh/id_ed25519_github_b
3-2. GitHubへ公開鍵の登録
それぞれの公開鍵の中身を確認・コピーし、各GitHubアカウントの [Settings] > [SSH and GPG keys] に登録します。
Bash
cat ~/.ssh/id_ed25519_github_a.pub # アカウントAに登録
cat ~/.ssh/id_ed25519_github_b.pub # アカウントBに登録
3-3. ~/.ssh/config の設定
ファイル(~/.ssh/config)を作成または開き、以下を記述します。
Plaintext
# --- アカウントA (メイン) ---
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_a
# --- アカウントB (サブ) ---
Host github.com-b
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_b
3-4. ディレクトリに応じたGit設定の自動切り替え
仕事用のプロジェクトを集約する専用フォルダ(例:~/work/)を作成します。
① 全体のデフォルト設定(アカウントA):~/.gitconfig 既存の .gitconfig に以下を追記します。
Ini, TOML
[user]
name = Your Name A
email = account_a@example.com
# ~/work/ 配下のディレクトリでは、別のアカウントB用設定を読み込む
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig-b
② 仕事用フォルダ専用の設定:~/work/.gitconfig-b 新しくファイルを作成し、仕事用のアカウント情報を記述します。
Ini, TOML
[user]
name = Your Name B
email = account_b@example.com
4. VS Code の最適化設定
OpenTofu と Terraform のコード(.tf ファイル)を快適に記述・管理するための設定です。
4-1. 必須の拡張機能
VS Codeの拡張機能マーケットプレイスから以下をインストールします。
- OpenTofu (公式の構文ハイライト・補完ツール)
- HashiCorp Terraform (Terraform用の公式拡張機能)
4-2. 保存時の自動整形(Format on Save)
VS Codeの settings.json(設定ファイル)を開き、ファイル保存時に自動でインデントやコードが綺麗に整う(tofu fmt / terraform fmt)ように以下を追記します。
JSON
"[opentofu]": {
"editor.defaultFormatter": "opentofu.opentofu",
"editor.formatOnSave": true
},
"[terraform]": {
"editor.defaultFormatter": "hashicorp.terraform",
"editor.formatOnSave": true
}
4-3. GitHubアカウントのサインイン
VS Codeの左下にある人型アイコンから、アカウントAとアカウントBの両方でGitHubにサインインしておきます。仕事用フォルダ(~/work/)を開いているときは、設定の「ワークスペース」タブから、優先アカウント(Preferred Account)をアカウントBに指定しておくと、Copilot等のライセンス競合が防げます。
5. 日常の開発ワークフロー(逆引きチートシート)
環境構築完了後の、日々の操作手順です。
Q. 新しい仕事用(アカウントB)のリポジトリを始めるには?
- ターミナルで
~/work/に移動します。 - GitHubからコピーしたURLの
github.comの部分をgithub.com-bに手動で書き換えてクローンします。Bashcd ~/work/ git clone git@github.com-b:Organization/work-repo.git - クローンしたフォルダを VS Code で開きます。以降のコミットやプッシュはVS CodeのGUI操作で自動的に仕事用アカウントが適用されます。
Q. このプロジェクト、OpenTofuだっけ? Terraformだっけ?
それぞれのコマンドを叩けば、tenv が自動判別して現在のバージョンを返してくれます。
Bash
tofu --version
tf --version
Q. 実行するコマンドは?
プロジェクトのツール指定に合わせて、通常通り実行します。
- OpenTofuの場合:
tofu init➔tofu plan➔tofu apply - Terraformの場合:
terraform init➔terraform plan➔terraform apply
これですべてのインフラコードを、アカウントの切り替えミスなく安全に、かつバージョンを自在に操りながら開発できるようになりました!
コメント