Подтвердить что ты не робот

Вагрированные общие и синхронизированные папки

Я создал Vagrantfile со следующим содержимым:

Vagrant::Config.run do |config|

  config.vm.define :foo do |cfg|
    cfg.vm.box     = 'foo'
    cfg.vm.host_name = "foo.localdomain.local"
    cfg.vm.network :hostonly, "192.168.123.10"
  end

  Vagrant.configure("2") do |cfg|
    cfg.vm.customize [ "modifyvm", :id , "--name", "foo" , "--memory", "2048", "--cpus", "1"]
    cfg.vm.synced_folder "/tmp/", "/tmp/src/"
  end

end

После vagrant up или vagrant reload я получаю:

[foo] Attempting graceful shutdown of VM...
[foo] Setting the name of the VM...
[foo] Clearing any previously set forwarded ports...
[foo] Fixed port collision for 22 => 2222. Now on port 2200.
[foo] Creating shared folders metadata...
[foo] Clearing any previously set network interfaces...
[foo] Preparing network interfaces based on configuration...
[foo] Forwarding ports...
[foo] -- 22 => 2200 (adapter 1)
[foo] Booting VM...
[foo] Waiting for VM to boot. This can take a few minutes.
[foo] VM booted and ready for use!
[foo] Setting hostname...
[foo] Configuring and enabling network interfaces...
[foo] Mounting shared folders...
[foo] -- /vagrant

Мои вопросы:

  • Почему Vagrant монтирует общую папку /vagrant? Я читаю, что общие папки устарели в пользу синхронизированных папок, и я никогда не определял какую-либо общую папку в моем Vagrantfile.
  • Почему синхронизированная папка не настроена?

Я использую версию Vagrant версии 1.2.7 на MacOX 10.8.4.

4b9b3361

Ответ 1

общие папки VS синхронизированные папки

В основном общие папки переименовываются в синхронизированную папку с v1 на v2 (docs), под капотом она по-прежнему использует vboxsf между хостом и гостем (известные проблемы производительности при наличии большого количества файлов/каталогов).

Каталог Vagrantfile, установленный как /vagrant в гостевой

Vagrant устанавливает текущий рабочий каталог (где Vagrantfile находится) в качестве /vagrant в гостевой системе, это поведение по умолчанию.

См. docs

ПРИМЕЧАНИЕ. По умолчанию Vagrant поделится вашим каталогом проектов (каталог с Vagrantfile) с /vagrant.

Вы можете отключить это поведение, добавив cfg.vm.synced_folder ".", "/vagrant", disabled: true в свой Vagrantfile.

Почему синхронизируемая папка не работает

На основе вывода /tmp на хосте НЕ было установлено во время работы.

Используйте VAGRANT_INFO=debug vagrant up или VAGRANT_INFO=debug vagrant reload, чтобы запустить виртуальную машину для получения дополнительных сведений о том, почему синхронизированная папка не установлена. Может быть проблемой разрешения (биты режима /tmp на хосте должны быть drwxrwxrwt).

Я проверил быструю проверку, используя следующее, и это сработало (я использовал опциональную базу bento raring vagrant base box)

config.vm.synced_folder "/tmp", "/tmp/src"

Выход

$ vagrant reload
[default] Attempting graceful shutdown of VM...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Available bridged network interfaces:
1) eth0
2) vmnet8
3) lxcbr0
4) vmnet1
What interface should the network bridge to? 1
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Running 'pre-boot' VM customizations...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant
[default] -- /tmp/src

Внутри виртуальной машины вы можете увидеть информацию о монтировании /tmp/src on /tmp/src type vboxsf (uid=900,gid=900,rw).