そもそも
vagrant-awsでインスタンスを建てる検証をしていたのですが、起動はvagrantでやったものの、停止はAWSの管理コンソールから消してしまっていました。それを忘れていて、もう検証終わったから鍵とかIAMも消しちゃえと消してしまってほったらかしてました。月日が流れ、ふとvagrant global-status
を叩くと多数のゾンビプロセスが・・・。しかもproviderがawsのものがrunningステータスのままになっていました。
vagrant haltしてみる
AWSのIDと鍵がないため、エラーになりました。まあそうですよね。鍵情報が残っていれば、haltできるはずです。
There are errors in the configuration of this machine. Please fix
the following errors and try again:
AWS Provider:
* An access key ID must be specified via "access_key_id"
* A secret access key is required via "secret_access_key"
※ 上記はhaltした際のログが残ってなかったのでvagrant up
したときのものです。たぶん同じ
vagrant global-status --pruneを使ってみる
調べた所このコマンドでゾンビプロセスが消せるということがわかり、勝ったな、と思っていましたが、結局鍵情報がないため途中で失敗してしまいました。試していないのですが、鍵情報さえあれば、vagrant global-status
の情報が更新されると思います。
アンインストールする?
それは最後の手段だろ!ということでパス
~/.vagrant.d/data/machine-indexのファイルを消してみる
ここにindexとindex.lockというファイルがありました。json形式のファイルだったため、jqでパースしてみると、こんな感じに
},
"b9b5925b43a842a086829654f371a643": {
"local_data_path": "<project>/.vagrant",
"name": "test",
"provider": "virtualbox",
"state": "aborted",
"vagrantfile_name": null,
"vagrantfile_path": "<project>/ci-test",
"updated_at": null,
"extra_data": {
"box": {
"name": "chef/centos-6.5",
"provider": "virtualbox",
"version": "1.0.0"
}
}
},
"6b2809189e6444079b084c232fbf7300": {
"local_data_path": "<project>/.vagrant",
"name": "test",
"provider": "aws",
"state": "running",
"vagrantfile_name": null,
"vagrantfile_path": "<project>",
"updated_at": null,
"extra_data": {
"box": {
"name": "dummy",
"provider": "aws",
"version": "0"
}
}
},
これだ!!!
ということで、両ファイルを削除したところ、すべての仮想マシン情報が出なくなりました。その後、試しにvirtualboxにインスタンスを立ててみたところ、特にエラーもなく使えました。たぶんjson形式で情報を管理しているんでしょうね。
こんなことが起きないようにインスタンスの取り扱いには注意しましょう。他に対処方法があったなら知りたいです。