Vagrantの亡霊マシンを成仏させる

# この記事のサマリ
`vagrant global-status`を実行したら、もう物理ディレクトリを削除してしまったマシンが残っていて気持ち悪い。。。そんなときは、`vagrant global-status --prune`を実行して成仏させましょうというお話です。

# 対象読者
vagrantを利用している方で、`vagrant global-status`を実行したら、「コイツ何者！！」とか、マシンを作成したディレクトリは削除してしまったからdestroyできない。。。って感じでお困りの方。

# 動作確認バージョン
`vagrant version`の結果↓
Installed Version: 1.7.4

# 経緯
vagrantのコマンドと戯れていて、おもむろに`vagrant global-status`を実行してみたら、すでに物理削除したマシンが亡霊のように残っていました。。。恐怖にかられた私は、除霊しようと思い`vagrant destroy [マシンのID]`というコマンドで除霊を試みました。。。
**しかし!!**作業用ディレクトリがもうないから消せないんだぜ！！って言われて成仏してくれませんでした。じゃぁどうすればいいのよ！！ってなって調べてみました。

# 除霊に至るまでの詳細
いろいろな実験用のsandbox環境をvagrantで作ってきたから、何があるのかよくわかんなくなってきたから、今の状況を一覧化したいなぁ。。。
おっ、`vagrant global-status`を打つと、分かるらしい。。。
→やってみよう！！

```
$ vagrant global-status
id       name           provider   state    directory
------------------------------------------------------------------------------------------------
0464ba6  for_rails      virtualbox running  C:/cygwin64/home/yukimura1227/vagrant_example2
bb8f69c  for_mean       virtualbox running  C:/cygwin64/home/yukimura1227/vagrant_mean
91fbaa3  for_mysql      virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_mysql
239a0b1  for_docker     virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_coreos_jikken
bd80dd1  core-01        virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_coreos4docker
cf94378  cent7_0        virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_cent7
6a0222a  my_develop_env virtualbox running  C:/cygwin64/home/yukimura1227/vagrant_my_dev_env

The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date. To interact with any of the machines, you can go to
that directory and run Vagrant, or you can use the ID directly
with Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"
```

あれぇ。。for_meanは、フォルダ毎削除してしまったマシンだなぁ。ふむふむ、idを指定して`vagrant destory`してあげれば、消えてくれるのかな？？
→やってみよう！！

```
$ vagrant destroy bb8f69c
The working directory for Vagrant doesn't exist! This is the
specified working directory:

C:/cygwin64/home/yukimura1227/vagrant_mean

$ vagrant global-status
id       name           provider   state    directory
------------------------------------------------------------------------------------------------
0464ba6  for_rails      virtualbox running  C:/cygwin64/home/yukimura1227/vagrant_example2
bb8f69c  for_mean       virtualbox running  C:/cygwin64/home/yukimura1227/vagrant_mean
91fbaa3  for_mysql      virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_mysql
239a0b1  for_docker     virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_coreos_jikken
bd80dd1  core-01        virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_coreos4docker
cf94378  cent7_0        virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_cent7
6a0222a  my_develop_env virtualbox running  C:/cygwin64/home/yukimura1227/vagrant_my_dev_env

The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date. To interact with any of the machines, you can go to
that directory and run Vagrant, or you can use the ID directly
with Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"
```

**成仏しない！！ヤッベェゾ！！**
[https://www.vagrantup.com/docs/cli/global-status.html](https://www.vagrantup.com/docs/cli/global-status.html)
に記載がありました。
global-statusのオプションに`--prune`があるので、それを利用するとよいようです。
pruneというのは、「不要なものを取り除く」という意味ですね。
→やってみよう！！！

```
yukimura1227@yukimura_x250 ~
$ vagrant global-status --prune
id       name           provider   state    directory
------------------------------------------------------------------------------------------------
0464ba6  for_rails      virtualbox running  C:/cygwin64/home/yukimura1227/vagrant_example2
91fbaa3  for_mysql      virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_mysql
239a0b1  for_docker     virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_coreos_jikken
bd80dd1  core-01        virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_coreos4docker
cf94378  cent7_0        virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_cent7
6a0222a  my_develop_env virtualbox running  C:/cygwin64/home/yukimura1227/vagrant_my_dev_env

The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date. To interact with any of the machines, you can go to
that directory and run Vagrant, or you can use the ID directly
with Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"

yukimura1227@yukimura_x250 ~
$ vagrant global-status
id       name           provider   state    directory
------------------------------------------------------------------------------------------------
0464ba6  for_rails      virtualbox aborted  C:/cygwin64/home/yukimura1227/vagrant_example2
91fbaa3  for_mysql      virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_mysql
239a0b1  for_docker     virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_coreos_jikken
bd80dd1  core-01        virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_coreos4docker
cf94378  cent7_0        virtualbox poweroff C:/cygwin64/home/yukimura1227/vagrant_cent7
6a0222a  my_develop_env virtualbox running  C:/cygwin64/home/yukimura1227/vagrant_my_dev_env

The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date. To interact with any of the machines, you can go to
that directory and run Vagrant, or you can use the ID directly
with Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"
```

おぉ！！for_meanが成仏してくれた！！
一度、`--prune`オプションをつけて実行すると、クリーニングされて次からはオプションつけなくても出てこなくなるみたいですね。

簡単に亡霊マシンが成仏してくれてよかったです。