bajar - Vagrant carpetas compartidas y sincronizadas
vagrant virtualbox (1)
Creé un Vagrantfile con el siguiente contenido:
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
Después de vagrant up
o vagrant reload
obtengo:
[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
Mis preguntas son:
- ¿Por qué Vagrant está montando la carpeta compartida
/vagrant
? He leído que las carpetas compartidas están en desuso a favor de las carpetas sincronizadas, y nunca definí ninguna carpeta compartida en mi Vagrantfile. - ¿Por qué la carpeta sincronizada no está configurada?
Estoy usando la versión 1.2.7 de Vagrant en MacOX 10.8.4.
carpetas compartidas VS carpetas sincronizadas
Básicamente, las carpetas compartidas se renombran a carpetas sincronizadas de v1 a v2 (docs), bajo el capó sigue utilizando vboxsf
entre el host y el invitado (hay problemas de rendimiento conocidos si hay una gran cantidad de archivos / directorios).
Directorio vagrantfile montado como /vagrant
en guest
Vagrant está montando el directorio de trabajo actual (donde reside Vagrantfile
) como /vagrant
en el invitado, este es el comportamiento predeterminado.
Ver docs
NOTA: De forma predeterminada, Vagrant compartirá el directorio de su proyecto (el directorio con el Vagrantfile) en / vagrant.
Puede deshabilitar este comportamiento agregando cfg.vm.synced_folder ".", "/vagrant", disabled: true
en su Vagrantfile
.
¿Por qué la carpeta sincronizada no funciona?
En función de la salida /tmp
en el host NO se montó durante el tiempo de actividad.
Use VAGRANT_INFO=debug vagrant up
o VAGRANT_INFO=debug vagrant reload
para iniciar la VM para obtener más resultados sobre por qué la carpeta sincronizada no está montada. Podría ser un problema de permisos (los bits de modo de /tmp
en el host deben ser drwxrwxrwt
).
Hice una prueba rápida de prueba usando lo siguiente y funcionó (usé opscode bento raring vagrant base box)
config.vm.synced_folder "/tmp", "/tmp/src"
salida
$ 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
Dentro de la VM, puede ver la información de montaje /tmp/src on /tmp/src type vboxsf (uid=900,gid=900,rw)
.