LoginSignup
17
23

More than 5 years have passed since last update.

Vagrantのconfig.vm.synced_folderのパスの設定、絶対パスか相対パスか

Last updated at Posted at 2017-09-19

VagrantfileでホストOSとゲストOSのフォルダを同期したい時にconfig.vm.synced_folderで設定しますが、ホストOS側、ゲストOS側それぞれパスの設定の仕方を華麗にミスったせいでよく分からんフォルダ同士が謎に同期されるという事象が起きたので、2度とこのようなことが起こらぬようここに記しておきます。

※追記

コメントでご指摘がありましたが、
ホスト側のパスはVagrantfileからの相対パスだそうなので修正しました。

■結論

以下のように、ホストOS、ゲストOS共に最上位のフォルダからのパスをきちんと書いて、かつホストOS側のフォルダが存在しない場合は自動生成するcreate:"true"というオプションをつけることでうまくいきました。

config.vm.synced_folder "/docker", "/home/ubuntu/vagrant",create:"true"

■フォルダ構成

ホストOS
VagrantのゲストOSにUbuntuを導入して、そこにdockerを試しに入れてみようと思っていたので、Developフォルダの中にVagrantfileを設置し、同じくDevelopフォルダの中にdockerというフォルダを作成しました。

/Users/katsuki_y/Develop/docker

ゲストOS

/home/ubuntu

■もともとどんな設定をしたか

1.最初の設定

Vagrant.configure("2") do |config|
   config.vm.box = "ubuntu/xenial64"
   config.vm.synced_folder "/docker","/vagrant"
end

dockerフォルダ内にVagrantfileが存在したので、ホストOS側のdockerフォルダを同期しようと思いました。
また、ゲストOS側は/home/ubuntuの下に/vagrantフォルダを自動作成してdockerフォルダと同期しようとしました。

結果、ホストOS側の/dockerフォルダがありません!と怒られました。

1.次の設定

そうか、ホストOS側はdockerフォルダからの相対パスだから、/dockerじゃ無くて、/にすればいいのか!
と思って以下のように設定しました。

Vagrant.configure("2") do |config|
   config.vm.box = "ubuntu/xenial64"
   config.vm.synced_folder "/","/vagrant"
end

結果、ホストOS側の'/'以降の全てのフォルダ(UsersとかDesktopとか全部)が同期されて訳わからんくなってましたw

そうか、絶対パスなんだ!
と、ここでようやく気づき、少し調べてcreate:"true"が必要ということがわかり、上部の結論に書いた設定に至りました。

■もう一度結論

config.vm.synced_folder "/Users/katsuki_y/Develop/docker", "/home/ubuntu/vagrant",create:"true"

パスって難しいですね><

以上。

17
23
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
23