NFS échoue après avoir empaqueté une boîte Vagrant
-
13-12-2019 - |
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
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
- modifier
/etc/udev/rules.d/70-persistent-net.rules
et supprimez les lignes pour les interfaces autres queeth0
vagrant package
vagrant box add mypack package.box
vagrant destroy
- Dans
Vagrantfile
ensembleconfig.vm.box
àmypack
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.