Jadi saya mengalami masalah dengan setup Vagrant dari 'hashicorp / precision64' di buku MAC saya.
Pertama, konfigurasi saya:
VAGRANTFILE_API_VERSION = "2" Vagrant.configure (VAGRANTFILE_API_VERSION) do | config | config.vm.box = "hashicorp / precision64" config.vm.network "public_network", ketik: "dhcp",: bridge => 'en4: Thunderbolt Ethernet' config.vm.hostname = "mddirector" akhir
Ini adalah kelebihan dari 'gelandangan'
==> default: Mencoba mematikan VM ... ==> default: Memeriksa apakah kotak 'hashicorp / precision64' sudah terbaru ... ==> default: Menghapus port penerusan yang diatur sebelumnya ... ==> default: Menghapus semua antarmuka jaringan yang ditetapkan sebelumnya ... ==> default: Mempersiapkan antarmuka jaringan berdasarkan konfigurasi ... default: Adaptor 1: nat default: Adaptor 2: dijembatani ==> default: Meneruskan port ... default: 22 => 2222 (adaptor 1) ==> default: Booting VM ... ==> default: Menunggu mesin untuk boot. Ini mungkin memakan waktu beberapa menit ... default: alamat SSH: 127.0.0.1.1222 default: nama pengguna SSH: gelandangan default: metode auth SSH: kunci pribadi default: Peringatan: Batas waktu koneksi. Mencoba lagi ... ==> default: Mesin boot dan siap! GuestAdditions 4.3.10 berjalan --- OK. ==> default: Memeriksa penambahan tamu di VM ... ==> default: Mengatur nama host ... ==> default: Mengkonfigurasi dan mengaktifkan antarmuka jaringan ... ==> default: Memasang folder bersama ... default: / gelandangan => / Pengguna / garthm / Proyek / gelandangan ==> default: Mesin sudah disediakan. Jalankan `ketentuan gelandangan` atau gunakan` --provisi` ==> default: untuk memaksakan provisi. Penyedia yang ditandai untuk menjalankan selalu akan tetap berjalan.
'ifconfig' menunjukkan yang berikut:
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 Topeng: 255.255.255.0 inet6 addr: fe80 :: a00: 27ff: fe88: ca6 / 64 Lingkup: Tautan UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1 Paket RX: 725 kesalahan: 0 turun: 0 overruns: 0 bingkai: 0 Paket TX: 544 kesalahan: 0 jatuh: 0 overruns: 0 operator: 0 tabrakan: 0 txqueuelen: 1000 RX byte: 90824 (90,8 KB) TX byte: 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 Topeng: 255.255.248.0 UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1 Paket RX: 3490 kesalahan: 0 jatuh: 0 overruns: 0 bingkai: 0 Paket TX: 7 kesalahan: 0 jatuh: 0 overruns: 0 operator: 0 tabrakan: 0 txqueuelen: 1000 RX byte: 345981 (345,9 KB) TX byte: 1102 (1,1 KB) lo Link encap: Local Loopback inet addr: 127.0.0.1 Mask: 255.0.0.0 inet6 addr: :: 1/128 Cakupan: Host MENJALANKAN LOOPBACK MTU: 16436 Metrik: 1 Paket RX: 0 kesalahan: 0 jatuh: 0 overruns: 0 bingkai: 0 Paket TX: 0 kesalahan: 0 jatuh: 0 overruns: 0 operator: 0 tabrakan: 0 txqueuelen: 0 Bita RX: 0 (0,0 B) Bita TX: 0 (0,0 B)
Masalah saya adalah, bahwa saya dapat melakukan ping VM dari mesin host saya ( IP: 10.0.24.112
), orang lain juga dapat melakukan ping VM saya ( 10.0.24.XXX
), VM saya dapat melakukan ping devbox saya ( IP: 10.10.116.254
), saya dapat melakukan ping ke pengembang lain pengaturan mesin virtual dari devbox saya () bukan Vagrant, IP: 10.10.116.254
), tapi saya tidak bisa ping VM saya dari devbox saya dan pengembang lain tidak bisa ping VM saya dari devbox mereka.
Pengaturan mesin virtual yang mereka miliki adalah dengan Bridged NIC saja, tetapi gelandangan karena alasan tertentu memiliki NAT dan Bridged, meskipun, saya telah menentukan bridged di konfigurasi. Seperti yang Anda lihat, ada dua alamat IP untuk Vagrant VM, yang sepertinya tidak benar. Anda juga dapat, saat boot up, melakukan port forward pada Adapter 1, yang merupakan adaptor NAT, yang artinya sepertinya menggunakan adaptor NAT secara default untuk semuanya.
Bagaimana cara saya menyingkirkan adaptor NAT dan hanya menggunakan bridged?
Jika saya mengedit pengaturan VirtualBox dan menonaktifkan adaptor NAT, jadi hanya ada Adapter yang terhubung dan boot kotak melalui VirtualBox (yaitu: tidak menggunakan gelandangan), maka itu hanya memiliki eth0 dengan alamat IP yang dapat ping dari devbox saya , itulah yang saya cari. Jika saya mencoba dan menggagalkan kotak setelah mengedit pengaturan VirtualBox dan menonaktifkan adaptor NAT, saya mendapatkan kesalahan berikut:
Ada kesalahan saat menjalankan `VBoxManage`, CLI yang digunakan oleh Vagrant untuk mengendalikan VirtualBox. Perintah dan stderr ditunjukkan di bawah ini. Perintah: ["modvvm", "7f1c12f7-74cd-4c6b-aa5a-16d6209cf2b3", "--natpf1", "ssh, tcp, 127.0.0.1.22222, 22"] Stderr: VBoxManage: error: Aturan NAT dari nama ini sudah ada VBoxManage: error: Detail: kode NS_ERROR_INVALID_ARG (0x80070057), komponen NATEngine, antarmuka INATEngine, callee nsISupports VBoxManage: error: Konteks: "AddRedirect (Bstr (strName) .raw (), proto, Bstr (strHostIp) .raw (), RTStrToUInt16 (strHostPort), Bstr (strGuestIp) .raw (), RTStrToUInt16 (strGestest)) baris 1655 dari file VBoxManageModifyVM.cpp
Jika saya segera melakukan gelandangan lagi, itu telah mengaktifkan kembali adaptor NAT lagi, dan kami kembali memiliki masalah yang sama lagi.
Jawaban singkatnya adalah jangan.
Anda dapat mengesampingkan adaptor 1 tetapi mengharapkan masalah setidaknya
vagrant ssh
Menghasilkan:
Sayangnya sepertinya mengunci konfigurasi network adapter tetapi mungkin Anda akan lebih beruntung dari saya.
Jika Anda melakukannya, Anda selalu dapat menghentikan dan memuat ulang dengan benar
ssh.host
. Atau saya pernah mendengarvagrant dns
tetapi tidak pernah mencobanya.sumber
Saya menemukan diskusi ini di StackOverflow.
Bagi saya, itu sudah cukup untuk membuka terkait
Vagrantfile
dan menghapus komentar pada baris berikut:dan kemudian jalankan
vagrant reload
sumber