Dossiers partagés et synchronisés

J’ai créé un fichier Vagrant avec le contenu suivant:

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 

Après le vagrant up ou le vagrant reload je reçois:

 [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 

Mes questions sont:

  1. Pourquoi Vagrant installe-t-il le dossier partagé /vagrant ? Je lis les dossiers partagés sont déconseillés en faveur des dossiers synchronisés, et je n’ai jamais défini de dossier partagé dans mon fichier Vagrant.
  2. Pourquoi le dossier synchronisé n’est-il pas configuré?

J’utilise Vagrant version 1.2.7 sur MacOX 10.8.4.

dossiers partagés VS dossiers synchronisés

Fondamentalement, les dossiers partagés sont renommés en un dossier synchronisé de v1 à v2 (docs), sous le capot, il utilise toujours vboxsf entre l’hôte et l’invité (il existe des problèmes de performances connus en cas de grand nombre de fichiers / répertoires).

Répertoire Vagrantfile monté en tant que /vagrant dans l’invité

Vagrant monte le répertoire de travail actuel (où réside Vagrantfile ) sous /vagrant dans l’invité, il s’agit du comportement par défaut.

Voir les documents

REMARQUE: Par défaut, Vagrant partagera le répertoire de votre projet (le répertoire contenant le fichier Vagrant) avec / vagrant.

Vous pouvez désactiver ce comportement en ajoutant cfg.vm.synced_folder ".", "/vagrant", disabled: true dans votre Vagrantfile .

Pourquoi le dossier synchronisé ne fonctionne pas

Basé sur la sortie /tmp sur l’hôte n’a pas été monté pendant le temps de disponibilité.

Utilisez VAGRANT_INFO=debug vagrant up ou VAGRANT_INFO=debug vagrant reload pour démarrer la VM pour plus de sortie concernant la raison pour laquelle le dossier synchronisé n’est pas monté. Peut-être un problème de permission (les bits de mode de /tmp sur l’hôte doivent être drwxrwxrwt ).

J’ai fait un test rapide en utilisant ce qui suit et ça a fonctionné (j’ai utilisé la boîte de base vagrantage opscode bento

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

sortie

 $ 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 

Dans la VM, vous pouvez voir les informations de assembly /tmp/src on /tmp/src type vboxsf (uid=900,gid=900,rw) .