Сбой NFS после упаковки коробки Vagrant - PullRequest
8 голосов
/ 14 марта 2012

У меня странная проблема с (пере) упаковкой коробки Vagrant и надеюсь, что, возможно, кто-нибудь подскажет мне, в каком направлении смотреть. Это история

  • Я установил Vagrant и успешно создал некоторые манифесты кукол, и все это работает отлично, vagrant up ... provisioning, ...
  • Затем мне нужно было переключиться на NFS, что не удалось, поскольку nfs не был установлен на моей гостевой ОС (Ubuntu 11.04-amd64)
  • Я установил nfs-common на гостевой ОС (sudo apt-get install nfs-common)
  • vagrant halt
  • vagrant up
  • И монтирование NFS работает безупречно, даже после нескольких команд остановки / запуска, я счастлив!

Следующим логическим шагом будет упаковка коробки, поэтому мне не нужно переустанавливать nfs-common каждый раз при разрушении виртуальной машины.

  • В том же каталоге, что и выше: vagrant package
  • vagrant box add ubuntuvm2 package.box
  • rm package.box
  • изменить строку config.vm.box в Vagrantfile на ubuntuvm2
  • vagrant destroy
  • vagrant up
  • и внезапно монтирование nfs завершается неудачно, при подключении к виртуальной машине я могу подтвердить, что nfs-common действительно установлен, но монтирование NFS просто не удается: https://img.skitch.com/20120302-kwix296t44y31rxkd52pwm72f4.jpg

Кто-нибудь знает, в каком направлении начинать искать решение?

Я использую Virtualbox 4.1.8 и Vagrant 1.0.0 на OS-X Lion

Ответы [ 4 ]

13 голосов
/ 15 марта 2012

У меня была та же проблема, но я понял это.По крайней мере, теперь это работает для меня.:)

TL; DR:

  • Проверьте / etc / exports на наличие синтаксических ошибок и заново создайте / etc / exports с записью, которую вы убедитесь, что работает.
  • Убедитесь, что сетевые интерфейсы на коробке инициализированы правильно (проверьте / etc / network / interfaces и запустите ifconfig -a).
  • По крайней мере, Debian и Ubuntu хранят информацию о постоянном сетевом устройстве в / etc/udev/rules.d/70-persistent-net.rules.Если вы видите, что eth1 инициализируется как eth2, это происходит потому, что адрес mac сетевой карты восстанавливается при создании нового экземпляра box.rm /etc/udev/rules.d/70-persistent-net.rules и упакуйте ваш ящик.
  • Если вы не можете упаковать ваш ящик обновите / etc / network / interfaces для использования eth2 вместо eth1

Длинная форма:

  • Vagrant - 1.0.1
  • OS X - 10.7.3
  • Boxявляется пользовательским Debian Wheezy 64.

При перезагрузке или воссоздании коробки он умрет при монтировании NFS с типичным сообщением.

[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.

Проверка файла / etc / exports с помощью NFS Manager сообщает, что мои / etc / exports содержат синтаксические ошибки.

Я очищаю / etc / exports и проверяю клиент и сервер nfs с помощью этой записи:

/Users/tm/git -alldirs localhost 33.33.33.10

При запуске vagrant up NFS монтирование снова работает.

При переупаковке ящика после apt-get dist-upgrade я заметил, что папки NFS не будут монтироваться снова.

На этот раз не было ошибок вфайл / etc / exports.Я обнаружил, что Vagrant не инициализировал локальный интерфейс хоста.

/ etc / network / interfaces содержит это:

#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 вернул это:

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)

Интерфейс не был определен правильно.После обновления раздела / etc / network / intefaces для использования eth2 монтирование NFS снова работает.

4 голосов
/ 14 ноября 2012

Вот открытая ошибка об этом и решении:

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

  1. edit /etc/udev/rules.d/70-persistent-net.rules и удаление строк для интерфейсов, отличных от eth0
  2. vagrant package
  3. vagrant box add mypack package.box
  4. vagrant destroy
  5. In Vagrantfile установите config.vm.box на mypack
  6. vagrant up

Я проверял это на MAC OS X 10.7.5 и CentOS 6.2 64bit

ОБНОВЛЕНИЕ: ошибка теперь закрыта и перемещена но похоже, что у людей все еще есть проблема.

0 голосов
/ 11 февраля 2014

на хосте Ubuntu 12 / госте Ubuntu 12 следующие слова работали для меня с дискурсом

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;Мне также пришлось добавить IP-адрес хоста, определяемый vagrant, и гостевой IP, определенный Vagrant, в исключения брандмауэра

0 голосов
/ 16 марта 2013

В дополнение к существующим здесь ответам: не забывайте о возможных брандмауэрах. Если вы используете брандмауэр на хост-компьютере. Ошибка очень общая, хотя сообщение об ошибке, похоже, не указывает на это.

Если вы используете NoobProof и / или IceFloor, отключите брандмауэр или сделайте необходимые исключения.

...