Vagrant 仮想化技術

[Vagrant]フォルダが『見つからない。』、そして『共有されない。』

投稿日:



ここ最近、Vagrantを使った開発をしていなかったせいもあり、共有フォルダの作成でさっそく躓きました。
備忘録として残しておきます... 開発環境待ちだったOさん、待たせてごめんなさいw

概 要

問 題

今回の問題は以下の2点。

フォルダが見つからない問題
共有フォルダがマウントされない問題

前半の「フォルダが見つからない。」ってのに関しては、そもそも相対パスがどこ基準か忘れていることがそもそもの問題..
そして、これに関しては以前の開発でも同じようなことで、悩んでいたような気が...

後半の「共有フォルダがマウントされない。」に関しては、完全に『??』って感じでした。
mount: unknown filesystem type 'vboxsf'Error codeも見たことないし、'vboxsf'って何?

構 築 環 境

・ホストOS : Windows10 pro
・ゲストOS : CentOS7 (Vagrant Cloudから)
・VM : VirtualBox 5.2.12
・Vagrant : 2.2.0

問題1:フォルダが見つからない

原 因 と 解 決

参照場所にフォルダが存在しない。

vagrant init のコマンドで『Vagrantfile』がコマンドを実行したフォルダに生成されます。

46行目のコメントアウトされている config.vm.synced_folder "../data", "/vagrant_data" の部分が共有フォルダの設定に当たります。
前半のプロパティが『ホストOS側のパス』後半のプロパティが『ゲストOS側のパス』です。
ここら辺の詳しいところは、本家のサイトに記述があります。

これをこのまま、コメントアウトを外して vagrant up でVMを起動しようとすると..
The host path of the shared folder is missing: ../data
のError Codeが出力され、VMが起動しません。

初期パスでは『../data』が設定されているので、相対パスなのは理解できます。
問題はどこが基準なのか...

結論から言うと『Vagrantfile』が存在するフォルダを基準にしています。

ですが、パスを見ればわかる通り、『Vagrantfile』が存在する上の階層に『data』フォルダが必要になります。
正直、私としては『Vagrantfile』が存在する階層に共有フォルダも存在していて欲しいので、
config.vm.synced_folder "./data", "/vagrant_data" に書き換えて、VMを起動しています。

フォルダが存在しない場合にフォルダの生成を許可していない。

相対パスの位置が分かれば、フォルダを作って、『万事解決!』って感じがします。
ですが、そもそもVM起動の場面で、フォルダが無ければ、自動的に生成してあげる方が後々の『Vagrantfile』を配布することを考えると親切な気もします。

っということで、最終的には46行目を
config.vm.synced_folder "./data", "/vagrant_data", create: true って感じに書き換えました。
これで、『Vagrantfile』が存在するフォルダに『data』フォルダが存在しなければ、自動で作成して共有フォルダを作ることができます。

問題2:共有フォルダがマウントされない問題

原 因 と 解 決

VirtualBox Guest Additionsが必要

結論から、言ってしまうと『VritualBox Guest Addtions』が存在しないことが原因でした。
以下、たどり着くまでの過程です...

とりあえず、"vboxsf"が『VirtualBox Shared Folders』の略だということは調べてすぐにわかりましたw
後はマウントエラーが発生した際にPowershellに表示されていたメッセージを頑張って翻訳。
(Google先生に頼りたい気持ちを押させて、頑張って翻訳...)
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

要するに、VirtualBox Guest AddtionsとKernel moduleを介して利用できるらしいのですが、Kernel moduleはさておき『VirtualBox Guest Addtions』なんて入れた覚えはありません。

Google先生に聞いてみると、速攻でヒットしますw

Virtualbox上のCentOSにGuest AdditionsをインストールしてWindowsとフォルダーを共有させる

しかし、読んでまず感じたことは...

めちゃくちゃ面倒くさいやん!!!!ってことです。

他にも調べましたが...
VirtualBox Guest Additions のインストール
Guest Additions のインストールと共有フォルダの作成

やっぱり面倒くさい。
(いいから黙ってこの間にやれよ!とか言わないでください。)

探した結果、『vagrant-vbguest』 なるプラグインがあるらしいので、今回はそれを採用しました。

とりあえず、pluginの存在を確認してから、『vagrant-vbguest』をInstallしていきます。
Installされたことを確認して、早速『vagrant up』を実行。

共有対象のフォルダにカラーリングがされているので、無事に共有が完了しました。

とりあえず、無事に共有フォルダの設定は完了しましたw
待たせてしまったOさんには、申し訳ないですが新しい知識が増えたので個人的には良しとしますw

  • この記事を書いた人

@EaE

ぬこ様とC#をこよなく愛する27歳です. 医療:理学療法士から、IT:システムエンジニアへ華麗?な変身をとげました. サーバーサイドエンジニアとして、日々奮闘しています. 今年の目標は、頑張ってWebサービスを作ります!!

-Vagrant, 仮想化技術

Copyright© Developer Wall - 開発の壁 - , 2019 All Rights Reserved Powered by AFFINGER5.