vagrantにおけるゾンビhost問題


VCCWで複数環境を構築した際に、ひょうんなことから
$ vagrant upが通らなくなったので、その時の解決方法をメモ。

ゾンビhostをやっつけろ

VirtualBox側でboxを削除したりすると、削除したはずなのに、
vagrant上ではrunning状態になったままゾンビのように生き続け、
他の同IPのhostを阻害してしまうことがある。

自分がまさにこの状況になっていた。
そんなときは下記のコマンドで、全てのVagrantマシンの状態を確認することができる。

vagrant global-status

id       name               provider   state    directory
--------------------------------------------------------------------------------------------------
0dfb614  mogami.dev        virtualbox running   /Users/hoge/web/hoge01
caba6ea  yumemi.dev        virtualbox running  /Users/hoge/web/hoge02
2a96e64  mirin.dev         virtualbox poweroff /Users/hoge/web/hoge03

ここでは自分の場合mogami.devがゾンビ状態のhostだった。
同ディレクトリには既にファイルが存在していなかったので、
再度mogami.devのhost名で$ vagrant upし、
きちんと$ vagrant haltをしてあげたうえで$ vgrant destroyを行った。
これでステータスがrunningからpoweroffに切り替わった。

$ vagrant global-statusで表示されるステータスは現存しているかどうかは関係なく
キャッシュデータが表示されてしまう(ここでいうとmirin.devは現存しないキャッシュデータ)ので、
一旦ゴミの整理を兼ねて$ vagrant global-status --prune を行う。

vagrant global-status --prune

id       name               provider   state    directory
--------------------------------------------------------------------------------------------------
caba6ea  yumemi.dev        virtualbox running  /Users/hoge/web/hoge02

これで綺麗な状態に戻った。

ちなみに

idのところに表示されている文字列を下記のように利用すると、
どのディレクトリにいても操作できるようになるらしい。
$ vagrant destroy caba6ea