Pergunta

Estou enfrentando um problema estranho ao (re) embalar uma caixa do Vagrant e espero que talvez alguém possa me dizer em que direção olhar.Esta é a história

  • Instalei o Vagrant e criei com sucesso alguns manifestos de fantoches e tudo funciona bem, vagrant up ...provisionamento, ...
  • Então eu precisei mudar para o NFS, que falhou porque o nfs não estava instalado no meu sistema operacional convidado (Ubuntu 11.04-amd64)
  • Eu instalei o nfs-common no sistema operacional convidado (sudo apt-get install nfs-common)
  • vagrant halt
  • vagrant up
  • E a montagem NFS funciona perfeitamente, mesmo depois de vários comandos halt/up, estou feliz!

A próxima etapa lógica seria empacotar a caixa para que eu não precise reinstalar o nfs-common sempre que a VM for destruída.

  • No mesmo diretório acima: vagrant package
  • vagrant box add ubuntuvm2 package.box
  • rm package.box
  • mudar a linha config.vm.box no Vagrantfile para ubuntuvm2
  • vagrant destroy
  • vagrant up
  • e de repente a montagem do NFS falha, quando sshing na VM posso confirmar que o nfs-common está realmente instalado, mas a montagem do NFS simplesmente falha: https://img.skitch.com/20120302-kwix296t44y31rxkd52pwm72f4.jpg

Alguém tem alguma ideia de em que direção começar a procurar uma solução?

Estou usando o Virtualbox 4.1.8 e o Vagrant 1.0.0 no OS-X Lion

Foi útil?

Solução

Eu tive exatamente o mesmo problema, mas descobri.Pelo menos funciona para mim agora.:)

DR:

  • Verifique /etc/exports em busca de erros de sintaxe e recrie /etc/exports com uma entrada que você tenha certeza de que funciona.
  • Verifique se as interfaces de rede na caixa foram inicializadas corretamente (verifique /etc/network/interfaces e execute ifconfig -a).
  • Pelo menos o Debian e o Ubuntu armazenam informações sobre o dispositivo de rede persistente em /etc/udev/rules.d/70-persistent-net.rules.Se você perceber que eth1 foi inicializado como eth2 é porque o endereço MAC da placa de rede é regenerado quando você cria uma nova instância de caixa.rm /etc/udev/rules.d/70-persistent-net.rules e reembale sua caixa.
  • Se você não conseguir reempacotar sua caixa, atualize /etc/network/interfaces para usar eth2 em vez de eth1

Forma longa:

  • Vagabundo é 1.0.1
  • OS X é 10.7.3
  • A caixa é Debian Wheezy 64 personalizada.

Ao recarregar ou recriar a caixa, ela morreria na montagem NFS com a mensagem típica.

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

Inspecionando o arquivo /etc/exports com Gerenciador NFS isso me diz que meu /etc/exports contém erros de sintaxe.

Eu limpo /etc/exports e testo o cliente e servidor nfs com esta entrada:

/Users/tm/git -alldirs localhost 33.33.33.10

Ao executar o vagrant up, a montagem do NFS está funcionando novamente.

Ao reembalar a caixa após o apt-get dist-upgrade notei que as pastas NFS não seriam montadas novamente.

Desta vez não houve erros no arquivo /etc/exports.Descobri que o Vagrant não inicializou a interface local do host.

/etc/network/interfaces continha isto:

#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 retornou isto:

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)

A interface não foi definida corretamente.Depois de atualizar a sub-rotina /etc/network/intefaces para usar a montagem eth2 NFS está funcionando novamente.

Outras dicas

Aqui está um bug aberto sobre isso e uma solução:

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

  1. editar /etc/udev/rules.d/70-persistent-net.rules e excluir linhas para interfaces diferentes eth0
  2. vagrant package
  3. vagrant box add mypack package.box
  4. vagrant destroy
  5. Em Vagrantfile definir config.vm.box para mypack
  6. vagrant up

Eu testei isso no MAC OS X 10.7.5 e CentOS 6.2 64 bits

ATUALIZAR: o bug agora está fechado e mudou-se mas parece que as pessoas ainda estão tendo o problema.

Além das respostas existentes aqui:Não se esqueça dos possíveis firewalls.Se você executar um firewall em sua máquina host.O erro é muito genérico, embora a mensagem de erro não pareça indicar isso.

Se você usa NoobProof e/ou IceFloor, desative o firewall ou faça as exceções adequadas.

no Ubuntu 12 Host/Ubuntu 12 Guest o seguinte funcionou para mim com discurso

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

observação;Eu também tive que adicionar o IP do host determinado pelo vagrant e o IP do convidado determinado pelo Vagrant às exceções do firewall

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top