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にしとけばいいんじゃないかと思うんですが試してません。
まあ、そういうわけで、困っている方のお力になれればと思います。