初めて投稿します。
誤字脱字、説明不足等指摘事項がありましたらお知らせください。
よろしくお願いします。
私は現在Virtual BoxとVagrantを使って開発作業を行っております。
たまたま手が空いたので.net Coreの検証をしようと新しく仮想環境を立てた所、vagrantを再起動すると共有ディレクトリが共有されなくなる現象に当たりました。
その現象にハマって数時間つぶしてしまったので、自分へのメモとして記事に残したいと思います。
#環境
OS windows7
visual box 4.3.8
vagrant 1.7.4
開発仮想環境OS centOS 6.5
検証仮想環境OS centOS 7.1
#どの段階でエラーが発生するのか?
vagrant cloudからcentOS 7.1のboxを引いてきて、vagrant upした段階では、共有できている事を確認しました。
その後。yum updateを行いvagrant reloadした所、エラーが発生し共有ディレクトリが共有されなくなりました。
#原因調査
vagrant upする際に、
Guest Additions versions on your host (4.3.8) and guest (5.0.10) do not match.
というエラーが表示されていることに気付いたのでしらべました。
###Guest Additionsとは
Guest Additionsというのはhost側(VirtualBox)とguest側(centOS7)のディレクトリ共有を使うために必要なモノで、host,guestが同じバージョンを使用しないといけない事がわかりました。
つまり、centOS7のyum updateを行った際、
OSのカーネルが更新され、Guest Additionsのバージョンが更新されたためにhost側(VirualBox)とのバージョン不一致が起き共有ディレクトリのマウントに失敗していたようです。
#修正対応
今回はguest側のバージョンが新しいのでhost側のバージョンを上げてそろえる事で解決できそうです。ですが、vagrantには便利なプラグイン、vagrant-vbguestがあるのでこれを使って、バージョンをそろえることにしました。
vagrant plugin install vagrant-vbguest
これで、host側とguest側のGuest Additionsが一致し、共有ディレクトリが共有されました。
#次は開発環境が・・・
その後念のためと開発環境を更新した所、こちらもエラーでも共有ディレクトリでエラーがおきました。
今度はhost側のGuest Additionsのバージョンが新しすぎてguest側と異なっていました。
なので、今度はguest側のOSを更新したのですが、更新に失敗してしまいます。
内容的にどうやらインストールされているnode.jsのバージョンが低すぎてそこでエラーになっていたようです。
(※エラーログを取っとけばよかったのですが、とり忘れました・・・)
#結局Virtual Boxのダウングレードを行った
guest側のGuest Additionsを更新できないため、バージョンをそろえる事が出来ない以上、host側のバージョンを下げざるを得ないため、guest側で使用しているバージョンと同じバージョンのVisualBoxをダウンロードしてきてインストールし、ダウングレードによってバージョンを合わせて対応しました。
#まとめ
というわけで開発環境は復活しましたが、また検証環境がマウントできなくなったハズです。
どのようにして検証環境を動かすかはこれから考えます。
1台のPCで複数の仮想環境を作る場合はそれぞれの環境のバージョン等に気を付けないとダメですね。