web-dev-qa-db-fra.com

Dossiers partagés et synchronisés vagabonds

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 vagrant up ou 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 monte le /vagrant dossier partagé? Je lis les dossiers partagés qui sont obsolètes au profit des dossiers synchronisés et je n'ai jamais défini de dossier partagé dans mon Vagrantfile.
  2. Pourquoi le dossier synchronisé n'est-il pas configuré?

J'utilise la version 1.2.7 de Vagrant sur MacOX 10.8.4.

58
astropanic

dossiers partagés VS dossiers synchronisés

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

Répertoire Vagrantfile monté en tant que /vagrant Dans guest

Vagrant monte le répertoire de travail actuel (où Vagrantfile réside) en tant que /vagrant Dans l'invité, il s'agit du comportement par défaut.

Voir docs

REMARQUE: Par défaut, Vagrant partagera votre répertoire de projet (le répertoire avec Vagrantfile) 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 la phase de démarrage.

Utilisez VAGRANT_INFO=debug vagrant up Ou VAGRANT_INFO=debug vagrant reload Pour démarrer le VM) pour obtenir plus d'informations sur la raison pour laquelle le dossier synchronisé n'est pas monté. Il peut s'agir d'un problème d'autorisation (bits de mode de /tmp Sur l'hôte doit être drwxrwxrwt).

J'ai fait un test test rapide en utilisant ce qui suit et cela a fonctionné (j'ai utilisé opscode bento raring vagrant base box)

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 machine virtuelle, vous pouvez voir les informations de montage /tmp/src on /tmp/src type vboxsf (uid=900,gid=900,rw).

97
Terry Wang