Vagrantファイルを含むディレクトリを移動した時にエラーが出てvagrant upできない時の対処

二時間ハマった。時間を返せ。

ゆえあってプロダクトのディレクトリ構成を整理したので、Vagrantファイルが置いてあるディレクトリを他の場所に移して改めてvagrant up したら下記のようなエラーが出ました。

There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below.

「VBoxManageを起動したらエラーが出た。コマンドとエラーは下を見ろ。」

みたいな感じですか。

下を見るとこんな感じ。

Command: [“startvm”, “[VMのID]”, “–type”, “headless”]


Stderr: VBoxManage: error: RawFile#0 failed to create the raw output file /[Vagrantファイルが置いてある場所までのパス]/ubuntu-bionic-18.04-cloudimg-console.log (VERR_FILE_NOT_FOUND)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole

要するにこのubuntu-bionic-18.04-cloudimg-console.logが見つからんって事みたいで。昔のバージョンのVagrantではこんなログ出てなかった気がしてて、最近vagrantのupdateしたら出始めたような気がして、気になってはいたんですけどねえ。

で、まあ動かんことにはしょうもないから原因を探ったんですが。

原因の前に対処法を説明します。

Virtualboxマネージャーの該当VMの
「設定」で、
「ポート」の
「シリアルポート」の
「パス / アドレス」のパスがコピー前のVagrantファイルディレクトリのパスになってる。

これをコピー先のパスに変えてあげれば解決です。

っていうか、移動させちゃったら前の場所がなくなるから「見つかんねー」って怒ってるので、どこか存在するディレクトリなら良いと思います。

Vagrantファイルのディレクトリを「移動」させたからあかんかったわけですね。「コピー」だったら良かったわけですが、引っ越したのに引っ越し前の住所に郵便が届く、みたいな状況になるから非常に気持ち悪いと思います。

「いいから対処法だけ教えろ」って人はここまでで結構です。


少し問題だなーと思ったのは、この症状、別の場所で作った自前のboxをaddした後の環境で起きてるんですよね。ってことは、boxをpackagingした場所の情報が固定で入ってるわけで、、、

気になったので調べてみたら、ありました。

$HOME/.vagrant.d/boxes/[box名]/0/virtualbox/box.ovf

っていうファイルの中に、思いっきり上記ubuntu-bionic-18.04-cloudimg-console.logの絶対パスが書いてありましたよ。

<Port slot=”0″ enabled=”true” IOBase=”0x3f8″ IRQ=”4″ path=”/Users/takashi/[省略]/vagrant/ubuntu-bionic-18.04-cloudimg-console.log” hostMode=”RawFile”/>

これは好感度低いわー。同じディレクトリ構成のマシンにboxコピーしないと必ずup時にエラー出るじゃん。

シリアルポートの設定っぽいんで、boxイメージ作る環境でシリアルポートが不要なら最初からdisableにしとけばいいんじゃないかと思うんですが試してません。

まあ、そういうわけで、困っている方のお力になれればと思います。