Homesteadで複数プロジェクトを使い分ける方法

LaravelのプロジェクトでHomesteadを使っていて、別のプロジェクトでもHomesteadを使いたくなった時の対応方法について紹介します。

こういうことがしたい

次のようなケースを想定しています。

  • プロジェクトAでHomesteadを使用している
  • プロジェクトBでもHomesteadを使いたいが、プロジェクトAとは別の環境として構築したい

実際に使おうとするとエラーになる

いざ新しくHomesteadを使おうとgit cloneなどのもろもろを実行した後にvagrant upすると、次のようなエラーが出ます。

A VirtualBox machine with the name 'homestead' already exists.
Please use another name or delete the machine with the existing
name, and try again.

エラーの原因

書いてあるとおり、homesteadという名前のVirtualBoxがすでに存在しているため、エラーになります。
Homesteadを使うときに何も設定しないとデフォルトの名前はhomesteadが使われます。これが原因です。

すでに構築済みのHomesteadと、vagrant upしようとしたHomesteadでVirtualBoxの名前が同じになってしまっているのです。

解決策

新しく追加したプロジェクトの方では、別の名前をつけてあげましょう。
Homestead.yamlnameを追加するだけです。

Homestead.yaml
---
name: project-b
ip: "192.168.56.56"
memory: 2048
# ...

参考:laravel - Multiple Homestead Boxes - Stack Overflow

公式ドキュメントにはなかった

この解決策について、公式ドキュメントを漁ったのですが見つかりませんでした。

一方で実装を漁ってみると、scripts/homestead.rbに次のような処理が複数ありました。

scripts/homestead.rb
config.vm.define settings['name'] ||= 'homestead'

以上、Homesteadを複数のプロジェクトで動かすために必要な設定方法の紹介でした。意外と解決方法が単純でした。