Question

Je suis confronté à un problème étrange avec le (re)emballage d'une boîte Vagrant et j'espère que quelqu'un pourra peut-être me dire dans quelle direction regarder.C'est l'histoire

  • J'ai installé Vagrant et j'ai créé avec succès des manifestes de marionnettes et tout fonctionne bien, vagrant up...approvisionnement, ...
  • Ensuite, j'ai dû passer à NFS, ce qui a échoué car nfs n'était pas installé sur mon système d'exploitation invité (Ubuntu 11.04-amd64).
  • J'ai installé nfs-common sur le système d'exploitation invité (sudo apt-get install nfs-common)
  • vagrant halt
  • vagrant up
  • Et le montage NFS fonctionne parfaitement, même après plusieurs commandes halt/up, je suis content !

La prochaine étape logique serait d'emballer la boîte afin que je n'aie pas besoin de réinstaller nfs-common à chaque fois que la VM est détruite.

  • Dans le même répertoire que ci-dessus : vagrant package
  • vagrant box add ubuntuvm2 package.box
  • rm package.box
  • changer la ligne config.vm.box dans Vagrantfile vers ubuntuvm2
  • vagrant destroy
  • vagrant up
  • et tout d'un coup, le montage NFS échoue, lors de l'accès à la VM, je peux confirmer que nfs-common est bien installé mais le montage NFS échoue tout simplement : https://img.skitch.com/20120302-kwix296t44y31rxkd52pwm72f4.jpg

Quelqu'un a-t-il une idée dans quelle direction commencer à chercher une solution ?

J'utilise Virtualbox 4.1.8 et Vagrant 1.0.0 sur OS-X Lion

Était-ce utile?

La solution

J'ai eu exactement le même problème, mais je l'ai compris.Au moins, ça marche pour moi maintenant.:)

TL;DR :

  • Vérifiez /etc/exports pour les erreurs de syntaxe et recréez /etc/exports avec une entrée dont vous êtes sûr qu'elle fonctionne.
  • Vérifiez que les interfaces réseau sur la boîte sont correctement initialisées (vérifiez /etc/network/interfaces et exécutez ifconfig -a).
  • Au moins Debian et Ubuntu stockent des informations sur le périphérique réseau persistant dans /etc/udev/rules.d/70-persistent-net.rules.Si vous voyez que eth1 est initialisé en eth2, c'est parce que l'adresse MAC de la carte réseau est régénérée lorsque vous créez une nouvelle instance de box.rm /etc/udev/rules.d/70-persistent-net.rules et reconditionnez votre boîte.
  • Si vous ne parvenez pas à reconditionner votre boîte, mettez à jour /etc/network/interfaces pour utiliser eth2 au lieu de eth1

Forme longue:

  • Vagrant est 1.0.1
  • OS X est 10.7.3
  • La boîte est personnalisée Debian Wheezy 64.

Lors du rechargement ou de la recréation de la boîte, elle mourrait lors du montage NFS avec le message typique.

[default] Mounting NFS shared folders...
Mounting NFS shared folders failed. This is most often caused by the NFS
client software not being installed on the guest machine. Please verify
that the NFS client software is properly installed, and consult any resources
specific to the linux distro you're using for more information on how to
do this.

Inspecter le fichier /etc/exports avec Gestionnaire NFS cela me dit que mes /etc/exports contiennent des erreurs de syntaxe.

Je nettoie /etc/exports et teste le client et le serveur nfs avec cette entrée :

/Users/tm/git -alldirs localhost 33.33.33.10

Lors de l'exécution de vagrant up, le montage NFS fonctionne à nouveau.

Lors du reconditionnement de la boîte après apt-get dist-upgrade, j'ai remarqué que les dossiers NFS ne seraient plus montés.

Cette fois, il n'y a eu aucune erreur dans le fichier /etc/exports.J'ai découvert que Vagrant n'avait pas initialisé l'interface locale de l'hôte.

/etc/network/interfaces contenait ceci :

#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto eth1
iface eth1 inet static
    address 33.33.33.10
    netmask 255.255.255.0
#VAGRANT-END

ifconfig -a a renvoyé ceci :

eth0      Link encap:Ethernet  HWaddr 08:00:27:3a:47:72  
      inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
      inet6 addr: fe80::a00:27ff:fe3a:4772/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:971 errors:0 dropped:0 overruns:0 frame:0
      TX packets:614 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:83951 (81.9 KiB)  TX bytes:74872 (73.1 KiB)

eth2      Link encap:Ethernet  HWaddr 08:00:27:89:f5:e3  
      BROADCAST MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

L'interface n'a pas été définie correctement.Après la mise à jour de la strophe /etc/network/intefaces pour utiliser eth2, le montage NFS fonctionne à nouveau.

Autres conseils

Voici un bug ouvert à ce sujet et une solution :

https://github.com/mitchellh/vagrant/issues/997

  1. modifier /etc/udev/rules.d/70-persistent-net.rules et supprimez les lignes pour les interfaces autres que eth0
  2. vagrant package
  3. vagrant box add mypack package.box
  4. vagrant destroy
  5. Dans Vagrantfile ensemble config.vm.box à mypack
  6. vagrant up

J'ai testé cela sur MAC OS X 10.7.5 et CentOS 6.2 64 bits

MISE À JOUR: le bug est maintenant fermé et déplacé mais il semble que les gens aient toujours le problème.

En plus des réponses existantes ici :N'oubliez pas les éventuels pare-feu.Si vous exécutez un pare-feu sur votre machine hôte.L'erreur est très générique, même si le message d'erreur ne semble pas l'indiquer.

Si vous utilisez NoobProof et/ou IceFloor, désactivez le pare-feu ou faites les exceptions appropriées.

sur l'hôte Ubuntu 12/l'invité Ubuntu 12, ce qui suit a fonctionné pour moi avec le discours

nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/
config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", type: "nfs", nfs_udp: "true", nfs_version: "4", :nfs => nfs_setting

note;J'ai également dû ajouter l'adresse IP de l'hôte déterminée par Vagrant et celle de l'invité déterminée par Vagrant aux exceptions du pare-feu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top