はじめに
Vagrant destroyをせずにVagrantのプロジェクトディレクトリ(Vagrantfileがあるディレクトリ)を削除した場合、Vagrantから制御できなくなります。この状態から残った仮想マシンと、Vagrantがプロジェクトディレクトリ外で管理している情報を削除する方法をまとめます。
検証環境
- macOS Sierra 10.12.6
- Vagrant 2.0.1
- VirtualBox 5.2.2
Vagrantのプロジェクトディレクトリ削除直後の状態
仮想マシンはVirtualBoxで実行可能な状態で残っていてVBoxManage list vms
コマンドにより確認できます。
Vagrantのインデックス情報も残っていてvagrant global-status
コマンドにより確認できます。このインデックス情報は~/.vagrant.d/data/machine-index/index
ファイルに格納されています。
完全に削除するには、この二つの情報を削除します。
仮想マシンを削除する方法
VBoxManage unregistervm <uuid|vmname> --delete
コマンドを実行します。VBoxManage unregistervm
コマンドは仮想マシンの登録を解除するコマンドですが、 --delete
オプションを付けた場合は関連するファイルも削除します。
ringo@stupiddog $ VBoxManage list vms
"centos_default_1512144838296_7974" {10e2abf9-90e6-46fe-acf9-943029ff62da}
ringo@stupiddog $ VBoxManage unregistervm centos_default_1512144838296_7974 --delete
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
削除されるファイルは、VirtualBoxのマニュアルの「8.6. VBoxManage registervm / unregistervm」に記載されています。
https://www.virtualbox.org/manual/ch08.htmlより抜粋(google翻訳)
- マシンによって使用され、他のマシンと共有されていない差分ファイルを含むすべてのハードディスクイメージファイル。
- マシンが作成した保存済みの状態ファイル(存在する場合はマシンが「保存済み」状態で、オンラインスナップショットごとに1つ)。
- マシンのXMLファイルとそのバックアップ
- マシンログファイル(存在する場合)。
- 上記のすべてを削除した後で空の場合は、マシンディレクトリ。
Vagrantのインデックス情報を削除する方法
vagrant global-status --prune
コマンドを実行します。--prune
オプションを指定すると無効なインデックス情報が削除されます。