Vagrant + VirtualBox ローカルの開発環境をうっかり消し飛ばした日の話

2019年3月14日 快晴 社員旅行を明日にひかえ、本日も開発日和である。

普段使っている開発環境の挙動が気になり、ゴミファイルの掃除を思いつきました。

私は普段、Vagrant と VirtualBox で作った仮想環境で開発を行っています。

仮想マシンを閉じてもマシンが動いているような気配を感じたスピリチュアルエンジニアの私は、vagrantの様子を伺いました。

こころがおだやかではないので、たんたんとかいてゆきます。
ぜったいにまねしないでください。

>vagrant box list

hogehoge (virtualbox, 0)
piyopiyo (virtualbox, 0)

ここで私はhogehogeの方しか使っていないつもりだったので、piyopiyoを消そうと考えました。

>vagrant box remove piyopiyo
Box 'piyopiyo' (v0) with provider 'virtualbox' appears
to still be in use by at least one Vagrant environment. Removing
the box could corrupt the environment. We recommend destroying
these environments first:

default (ID: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)
default (ID: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)

Are you sure you want to remove this box? [y/N] n

???

なんか2つ動いてる。どういうこっちゃ。

ここでVMの電源をオフにします。

>vagrant box remove piyopiyo
Box 'piyopiyo' (v0) with provider 'virtualbox' appears
to still be in use by at least one Vagrant environment. Removing
the box could corrupt the environment. We recommend destroying
these environments first:

default (ID: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)

Are you sure you want to remove this box? [y/N] n

おっ 片方消えた。残った方何者。

>vagrant global-status
id       name    provider   state    directory
--------------------------------------------------------------------------
aaaaaaa  default virtualbox poweroff C:/test_vagrant/hogehuga
bbbbbbb  default virtualbox running  C:/vagrant_test/hogehuga
ccccccc  default virtualbox poweroff C:/vagrant/test
ddddddd  default virtualbox running  C:/vagrant/hogehuga
eeeeeee  default virtualbox aborted  c:/vagrant/hogehuga

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"

うわなんかめっちゃある。

どうやら過去に使った事があるもの(=キャッシュの残っているもの)は全て表示されているらしい。

>vagrant up

>vagrant global-status
id       name    provider   state    directory
--------------------------------------------------------------------------
aaaaaaa  default virtualbox poweroff C:/test_vagrant/hogehuga
bbbbbbb  default virtualbox running  C:/vagrant_test/hogehuga
ccccccc  default virtualbox poweroff C:/vagrant/test
ddddddd  default virtualbox running  C:/vagrant/hogehuga
eeeeeee  default virtualbox running  c:/vagrant/hogehuga

eeeeeeeのやつのstateが変わった。普段使ってるのはコイツか。

>vagrant global-status  --prune
id       name    provider   state   directory
------------------------------------------------------------------------
ddddddd  default virtualbox running  C:/vagrant/hogehuga
eeeeeee  default virtualbox running  c:/vagrant/hogehuga

ふーん? bbbbbbbお前消えるのか。まあ実体無いしそりゃ消えるか。

>vagrant halt
==> default: Attempting graceful shutdown of VM...

>vagrant global-status
id       name    provider   state    directory
-------------------------------------------------------------------------
ddddddd  default virtualbox running  C:/vagrant/hogehuga
eeeeeee  default virtualbox poweroff c:/vagrant/hogehuga

eeeeeeeが停止するよなぁそうだよなぁ。
それはいいんだけど走り続けるddddddd何者なんだ。

>vagrant box list
hogehoge (virtualbox, 0)
piyopiyo (virtualbox, 0)
>vagrant box remove hogehoge
Box 'hogehoge' (v0) with provider 'virtualbox' appears
to still be in use by at least one Vagrant environment. Removing
the box could corrupt the environment. We recommend destroying
these environments first:

default (ID: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)

Are you sure you want to remove this box? [y/N] n

適当にコマンドを打ち冷静になろうとした。

>vagrant destroy ddddddd
    default: Are you sure you want to destroy the 'default' VM? [y/N] n
==> default: The VM 'default' will not be destroyed, since the confirmation
==> default: was declined.
>vagrant package
==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...
==> default: Compressing package to: C:/vagrant/hogehuga/package.box

おもむろにバックアップを残そうとする。

>vagrant destroy ddddddd
    default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives...

あ、今回あっさり消えた。なんで。仮想マシン切ったっけな?

>vagrant global-status
id       name    provider   state   directory
------------------------------------------------------------------------
ddddddd  default virtualbox running C:/vagrant/hogehuga

>vagrant global-status  --prune
id       name   provider state  directory
--------------------------------------------------------------------
There are no active Vagrant environments on this computer! Or,
you haven't destroyed and recreated Vagrant environments that were
started with an older version of Vagrant.

消えてる。

>vagrant box list
hogehoge (virtualbox, 0)
piyopiyo (virtualbox, 0)

piyopiyo消えないかな?

>vagrant up

>vagrant box list
hogehoge (virtualbox, 0)
piyopiyo (virtualbox, 0)

>vagrant global-status
id       name    provider   state   directory
------------------------------------------------------------------------
fffffff  default virtualbox running C:/vagrant/hogehuga

>vagrant halt
==> default: Attempting graceful shutdown of VM...

>vagrant global-status
id       name    provider   state   directory
------------------------------------------------------------------------
fffffff  default virtualbox unknown C:/vagrant/hogehuga

???

――あれ、なんかローカル環境でDBにログインできなくなった。

すっかりvagrantとの戯れを楽しんでしまい、異変に気付くのが遅れました。

サービスもなんかダメだぞなんだこれ?? なんか下手なもん消したか??

やらかした感が溢れだします。面倒なことになりました。

>vagrant up

>vagrant ssh
Last login: Fri Mar 16 14:34:16 2018 from 10.0.2.2
Last login: Fri Mar 16 14:34:16 2018 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.

>vagrant box list
hogehoge (virtualbox, 0)
piyopiyo (virtualbox, 0)

>vagrant box remove piyopiyo
Removing box 'hogehoge' (v0) with provider 'virtualbox'...

>vagrant box list
hogehoge (virtualbox, 0)

>vagrant global-status
id       name    provider   state   directory
------------------------------------------------------------------------
fffffff  default virtualbox unknown C:/vagrant/hogehuga

……(新しくboxから開発環境を復旧させようとする音)

[root@localhost ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost ~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

……(裏でmysqlにアクセスができないことを確認している図)

自分の設定したパスでローカルにアクセスできないってのは恐らく、DBが太古の昔(自分がこのDBデータを先人から受け取ったあの日)に戻ってしまったからですね。

……(mysqlのパスを再設定する音

お、DB入れた。

あ、DBのデータが以前のものに戻ってる……

Vagrantをup/haltしても全く動かず電源オフのままであるような、よくわからない仮想マシンを1機削除していたことを思い出し、本件の原因は九割九分九厘それであることを理解しました。

やれやれ。

boxファイルにDBをバックアップしたい。(できるのかな?)

教訓

  • よくわからないデータやファイルを適当に削除するのはやめましょう。
  • 削除前にはバックアップを取るなど、備えを怠らないようにしましょう。

参考

不用意なリソース削除には気をつけよう!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です