Configurar Vagrant para compartir carpetas por NFS
NFS es más eficiente que el sistema de carpetas compartidas de VirtualBox cuando el número de ficheros crece. Para utilizar NFS, la configuración es la siguiente:
En Vagrantfile:
config.vm.network :hostonly, "192.168.XXX.XXX"
config.vm.share_folder "v-data", "/home/vagrant", "~/Documents/django/GSWD/precise64-shared", :nfs => true
En el host (en mi caso Fedora 18) instalamos NFS, que hará de servidor, y desactivamos el firewall.
yum install nfs-utils system-config-nfs
systemctl enable nfs-server.service
usermod nombre_usuario -a -G wheel # Reiniciar
sudo systemctl disable firewalld.service # Evitar reinicio. NFS ya funciona.
systemctl stop firewalld.service # Para conservar después de reinicio.
Tanto si usamos NFS como el sistema de carpetas compartidas de VirtualBox, los ficheros están en el host, y los hacemos visibles en la máquina virtual (guest). Ésta es la forma habitual de trabajar: creamos y modificamos el código en el host, donde tenemos nuestro editor de texto instalado, y ejecutamos en la máquina virtual. La razón de utilizar ésta es por cercanía al entorno de producción (versiones concretas de python, django, ruby, etc, distintas a las instaladas en el host).
La dirección opuesta, desde el guest hacia el host, no está disponible. Desde el guest, podemos escribir nuevos archivos a la carpeta compartida (situada en el punto de montaje), pero no compartir cualquier otra ya existente. Una solución sería mover las ya existentes a la compartida. Sin embargo, esto no deseable, porque estamos cambiando la ruta original. Otra idea sería montar la carpeta compartida en el directorio cuyo contenido queramos compartir (valga la redundancia). Desafortunadamente, el contenido ya presente no se mezcla, como podríamos pensar, con el contenido del host, sino que desaparece hasta que desmontemos (ver enlace). La solución sería nuevamente NFS, pero en este caso la máquina virtual sería servidor y el host cliente. Habría que configurarlo manualmente. No se puede desde Vagrantfile. De todas formas, no se suelen crear ficheros ni código en la máquina virtual, por lo que esto no supone un gran inconveniente.