はじめに
新しいPCを新調したため、既存PCで動作しているVagrant環境を、新しいPCに移行しました。その手順についての記事です。
環境
Windows11 (ホストOS)
Ubuntu20.4 (ゲストOS)
既存環境(BOXの作成)
PowerShellを起動して、VagrantからゲストOS(Ubuntu)を起動します。
%vagrant up
%vagrant ssh
既存環境のMACアドレスを新規環境にそのまま移行すると、新規環境でVagrantを起動した時にエラーになるらしいので、既存環境のMACアドレスがBOXに更新されないように、事前に処置をしておく必要があります。
$sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules
ゲストOSはexitで終了して、Vagrantも終了します。
%vagrant halt
PowerShellからつぎのコマンドを実行して、ゲストOSのBOXを作成します。
%vagrant package
package.boxファイルが作成されるので、package.boxファイルを新規PCの任意のフォルダに移動します。
既存環境(Vagrantフォルダの移行)
Vagrantのプロジェクトフォルダ(Vagrantfileがあるフォルダ)、WindowsとゲストOSとで共有しているフォルダがあれば、既存環境から新規環境に移動します。このとき、.vagrantディレクトリは移行する必要はありません。
Vagrantfileは移行した後リネームしておきます。新規環境でVagrantfileを新規に作成したときに、既存のVagrantfileが上書きされることを防ぐためです。Vagrantfileを新規に作成した後、リネームした既存のVagrantfileは削除することになります。
新規環境(Vagrantのインストール)
Vagrantの公式サイトにアクセスします。
https://www.vagrantup.com/
黒色のDownloadボタンをクリックします。
念のために、最新のバージョンではなく既存環境と同じバージョンのVagrantをインストールすることにします。右上にあるプルダウンメニューからダウンロードするバージョンを選択します。
既存環境のVagrantのバージョンはPowerShellから、つぎのコマンドで確認することができます。
$vagrant -v
ダウンロードするファイルを選択します。
I686は32bit版で、64bit版はAMD64を選択ことになるらしいです。
msiファイルがダウンロードされます。
msiファイルをダブルクリックしてインストールを実行します。
Vagrantのインストールが完了しても、Windows上にアイコンが作成されないため、一見、インストールされたかどうか分からない状況ではありますが、PowerShellでつぎのコマンドを実行することで、インストールされていることが確認できます。
$vagrant -v
インストールが完了すればOSの再起動を促すメッセージが表示されます。取りあえず<NO>を選択して、バックで動いているアプリをすべて終了した後に、手動で再起動をした方が無難でしょう。
新規環境(VagrantでBOXを追加)
PowerShellを起動して、新規環境から移動したpackage.boxがあるフォルダに移動します。
package.boxを保存するフォルダはどこでもかいません。Vagrantのプロジェクトフォルダ(vagrantfile配下)でないといけないことはありません。
この時点ではBOXはまだ追加されていないことを確認します。
%vagrant box list
BOXをVagrantに追加します。
%vagrant box add mybox/ubuntu20.4 package.box
%vagrant box add [任意のBOX名] package.box
BOXが追加されていることを確認します。
%vagrant box list
新規環境から移行した、Vagrantのプロジェクトフォルダに移動します。
%vagrant init mybox/ubuntu20.4
%vagrant init [任意のBOX名]
Vagrantfileが新規で作成されます。
vagrantfileと既存環境のvagrantfileとをwinmergeなどで比較して、既存環境のvagrantfileの内容を新規で作成したvagrantfileに転記します。
vagrantfileのconfig.vm.boxの値には、vagrant initコマンドの引数で指定した値が自動で更新されます。
Vagrantを起動します。
VirtualBoxを起動して、GUIからもゲストOSが起動されたことを確認しておきます。
$vagrant up
ステータスを確認して、runningになっていれば正常に起動できています。
$vagrant status
ゲストOS(Ubuntu20.4)にSSHで接続します。接続できればOKです。
確認ができれば、exitで終了します。
$vagrant ssh
Vagrantを終了します。
$vagrant halt


