Quindi sto riscontrando problemi con una configurazione di Vagrant di "hashicorp / precise64" sul mio libro MAC.
Innanzitutto, la mia configurazione:
VAGRANTFILE_API_VERSION = "2" Vagrant.configure (VAGRANTFILE_API_VERSION) do | config | config.vm.box = "hashicorp / precise64" config.vm.network "public_network", digitare: "dhcp",: bridge => 'en4: Thunderbolt Ethernet' config.vm.hostname = "mddirector" fine
Questo è il sostegno del "vagabondo in su"
==> impostazione predefinita: tentativo di arresto regolare della VM ... ==> impostazione predefinita: verifica se la casella "hashicorp / precise64" è aggiornata ... ==> impostazione predefinita: cancellazione di tutte le porte inoltrate precedentemente impostate ... ==> impostazione predefinita: cancellazione di eventuali interfacce di rete precedentemente impostate ... ==> impostazione predefinita: preparazione delle interfacce di rete in base alla configurazione ... impostazione predefinita: adattatore 1: nat impostazione predefinita: adattatore 2: a ponte ==> impostazione predefinita: porte di inoltro ... impostazione predefinita: 22 => 2222 (adattatore 1) ==> impostazione predefinita: avvio VM ... ==> impostazione predefinita: in attesa dell'avvio della macchina. Questo potrebbe richiedere alcuni minuti... impostazione predefinita: indirizzo SSH: 127.0.0.1:2222 impostazione predefinita: nome utente SSH: vagabondo impostazione predefinita: metodo di autenticazione SSH: chiave privata impostazione predefinita: avviso: timeout della connessione. Nuovo tentativo ... ==> impostazione predefinita: macchina avviata e pronta! GuestAdditions 4.3.10 in esecuzione --- OK. ==> impostazione predefinita: verifica aggiunte guest nella VM ... ==> impostazione predefinita: impostazione del nome host ... ==> impostazione predefinita: configurazione e abilitazione delle interfacce di rete ... ==> impostazione predefinita: montaggio cartelle condivise ... impostazione predefinita: / vagrant => / Users / garthm / Projects / vagrant ==> impostazione predefinita: macchina già fornita. Esegui `vagrant provision` o usa` --provision` ==> impostazione predefinita: per forzare il provisioning. I fornitori contrassegnati per l'esecuzione continueranno comunque.
'ifconfig' mostra quanto segue:
vagrant @ mddirector: ~ $ ifconfig eth0 Link encap: Ethernet HWaddr 08: 00: 27: 88: 0c: a6 inet addr: 10.0.2.15 Bcast: 10.0.2.255 Maschera: 255.255.255.0 inet6 addr: fe80 :: a00: 27ff: fe88: ca6 / 64 Ambito: collegamento UP BROADCAST RUNNING MULTICAST MTU: 1500 Sistema metrico: 1 Pacchetti RX: 725 errori: 0 rilasciati: 0 sovraccarichi: 0 frame: 0 Pacchetti TX: 544 errori: 0 rilasciati: 0 sovraccarichi: 0 portante: 0 collisioni: 0 txqueuelen: 1000 Byte RX: 90824 (90,8 KB) Byte TX: 63375 (63,3 KB) eth1 Link encap: Ethernet HWaddr 08: 00: 27: 2f: bb: 6a inet addr: 10.0.24.118 Bcast: 10.0.31.255 Maschera: 255.255.248.0 UP BROADCAST RUNNING MULTICAST MTU: 1500 Sistema metrico: 1 Pacchetti RX: 3490 errori: 0 rilasciati: 0 sovraccarichi: 0 frame: 0 Pacchetti TX: 7 errori: 0 rilasciati: 0 sovraccarichi: 0 portante: 0 collisioni: 0 txqueuelen: 1000 Byte RX: 345981 (345,9 KB) Byte TX: 1102 (1,1 KB) lo Link encap: Local Loopback inet addr: 127.0.0.1 Maschera: 255.0.0.0 inet6 addr: :: 1/128 Ambito: host UP LOOPBACK RUNNING MTU: 16436 Metrico: 1 Pacchetti RX: 0 errori: 0 rilasciati: 0 sovraccarichi: 0 frame: 0 Pacchetti TX: 0 errori: 0 rilasciati: 0 sovraccarichi: 0 portante: 0 collisioni: 0 txqueuelen: 0 Byte RX: 0 (0,0 B) Byte TX: 0 (0,0 B)
Il mio problema è che, se posso eseguire il ping della VM dal mio computer host ( IP: 10.0.24.112
), anche altre persone possono eseguire il ping della mia VM ( 10.0.24.XXX
), la mia VM può eseguire il ping del mio devbox ( IP: 10.10.116.254
), posso eseguire il ping delle impostazioni di altre macchine virtuali degli sviluppatori dal mio devbox ( non Vagrant IP: 10.10.116.254
), ma non riesco a eseguire il ping della mia VM dal mio devbox e altri sviluppatori non possono eseguire il ping della mia VM dal loro devbox.
Le configurazioni della macchina virtuale che hanno sono solo con una NIC con bridge, ma il vagabondo per qualche motivo ha sia un NAT che un bridge, anche se ho specificato il bridge nella configurazione. Come puoi vedere, ci sono due indirizzi IP per la VM Vagrant, che non sembra giusto. Puoi anche, quando si avvia, fa un port forwarding sull'adattatore 1, che è l'adattatore NAT, il che significa che sembra che stia usando l'adattatore NAT per impostazione predefinita per tutto.
Come posso eliminare l'adattatore NAT e utilizzare solo il bridge?
Se modifico le impostazioni di VirtualBox e disabilito l'adattatore NAT, quindi c'è solo l'adattatore con ponte e avvio la scatola tramite VirtualBox (cioè: non usando Vagrant up), allora ha solo eth0 con un indirizzo IP che è pingabile dal mio devbox , che è quello che sto cercando. Se provo a vagare nella casella dopo aver modificato le impostazioni di VirtualBox e disabilitato l'adattatore NAT, ottengo il seguente errore:
Si è verificato un errore durante l'esecuzione di `VBoxManage`, una CLI utilizzata da Vagrant per il controllo di VirtualBox. Il comando e stderr sono mostrati di seguito. Comando: ["editvm", "7f1c12f7-74cd-4c6b-aa5a-16d6209cf2b3", "--natpf1", "ssh, tcp, 127.0.0.1.2222,, 22"] Stderr: VBoxManage: errore: esiste già una regola NAT con questo nome VBoxManage: errore: Dettagli: codice NS_ERROR_INVALID_ARG (0x80070057), componente NATEngine, interfaccia INATEngine, chiamata nsISupports VBoxManage: errore: Contesto: "AddRedirect (Bstr (strName) .raw (), proto, Bstr (strHostIp) .raw (), RTStrToUInt16 (strHostPort), Bstr (strGuestIp) .raw (), RTStrToUInt16 (strGuestPort)" riga 1655 del file VBoxManageModifyVM.cpp
Se eseguo di nuovo immediatamente un vagabondo, ha riabilitato nuovamente l'adattatore NAT e torniamo di nuovo ad avere lo stesso problema.