AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

Vagrant up で予期せぬ box が起動に使われる

再現性は不明。

ロケ地:自分のMacbookPro@OSX El Capitan

vagrant up すると知らない環境が立ち上がる

vagrant up したら、前日まで利用していた環境が起動しない。 起動時のログを確認した所、vagrant box add したときに指定した box から、新しい VM 環境を作成している模様。

User-MacBook-Pro:rvm_vagrant user$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'rvm_vagrant'...

なんか Importing とか出てるんですけお! ちなみにこの様になるまえは、起動するとこのようなログが出ていた。

User-MacBook-Pro:rvm_vagrant user$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...

明らかにおかしい。

調べたら同様の症状の人は居た

elm-arata.hatenablog.com

ははぁん、なるほど。

VM の UUID を調べる

User-MacBook-Pro: $ VBoxManage list vms
"rvm_vagrant_default_1145141919893_46157" {0a5f536c-1fd5-40d5-8f7f-8c62749a9e11} <=こっちを使いたい
"centos6_mysql55_default_1145141919810_91735" {215b5e22-dffa-468f-bfee-83865f23d1c5}

UUID を修正する

本来利用したい「rvm_vagrant_default_1145141919893_46157」の UUID とは別の UUID が書き込まれているのを確認したので、書き換えてみる。

User-MacBook-Pro:vi /PATH/TO/.vagrant/machines/default/virtualbox/id
#=> 0a5f536c-1fd5-40d5-8f7f-8c62749a9e11 に書き換える

起動してみる

User-MacBook-Pro: $ vagrnt up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
...

おっやったz

default: Warning: Authentication failure. Retrying...

デデドン!

default: Warning: Authentication failure. Retrying...

とりあえず vagrant の UUID はちゃんとつけ変わったようなので、このエラーの対処をする。

qiita.com

鍵が異なっているらしい。 VM と紐付けが変わった時になんかあったのかもしれん。原因は不明。 とりあえず鍵を作成しなおす。

User-MacBook-Pro: $ cd /PATH/TO/VAGRANTFILE
User-MacBook-Pro: $ vagrant ssh-config
...
  IdentityFile /Users/hoge/key
...

IdentityFile に記載された鍵を使って ssh-keygen する。

User-MacBook-Pro: $ ssh-keygen -yf /Users/hoge/private_key > ./publickey

これをどうにかして、先程 UUID を書き換えた対象の VM へ持っていき、authorized_keys に書き込む。

今回は、VirtualBoxGUI から起動して、CLI を起動した所、ホストの Macbookpro の IP が見えたので、 MacOSX 側の SSH を許可して、SCP で取得させたのち、authorized_keys にリネームした。 (クリップボード共有が動かなかったのでこのような手段をとったが、クリップボード共有できている場合はコピペすればいい。)

編集終わったら、一応 sudo halt とかして一度 VM を止めておくといい。

※なんかこいう事もあるらしい

qiita.com

vagrant up

ここまでやったので、改めて vagrant up する。

User-MacBook-Pro: $ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
...
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

やったーなおった! このあと、vagrant ssh も無事疎通を確認できた。

わかったこと

カジュアルに紐付けが壊れるらしいので、壊れたらカジュアルに修正すること。 実は今回この現象に初めて遭遇したけど「本番デプロイするかー」とおもって vagrant up したら遭遇したので、めっちゃびっくりした。