Vagrant meneruskan berbagai port

20

Apakah ada cara untuk meneruskan serangkaian port menggunakan gelandangan 1.2.1 atau lebih tinggi? Saya tahu bahwa Anda dapat meneruskan sejumlah port secara individual dengan menggunakan

config.vm.forward_port 80, 4567

Atau, apakah jawabannya tidak menggunakan gelandangan untuk melakukan hal seperti itu?

Biji pohon ek
sumber
Tidak persis. Ingin tahu apakah Anda dapat menentukan rentang port yang akan dibuka, bukan satu per satu. Mungkin saya akan menghubungi penulis secara langsung.
Acorn
4
Karena Vagrantfile hanyalah skrip Ruby, Anda mungkin dapat menulis for for yang mengeksekusi config.vm.forward_port untuk setiap port yang Anda inginkan. Saya tidak lancar di Ruby, jadi saya tidak bisa membantu Anda dengan kode.
Lasar

Jawaban:

27

Jika ada yang membutuhkan contoh bagaimana melakukan loop di Vagrantfile Anda di sini adalah:

for i in 64000..65535
    config.vm.network :forwarded_port, guest: i, host: i
end

Loop di atas akan meneruskan semua port antara 64000 dan 65535 ke port yang sama persis pada tamu (perhatikan bahwa 64000 dan 65535 inklusif).

ddelrio1986
sumber
2
Di komputer saya gelandangan agak panjang untuk memetakan 1000 port. Kecuali Anda benar-benar membutuhkan begitu banyak port yang dipetakan, Anda harus memetakan 50 port.
Antoine
@Antoine ya saya perhatikan sangat lambat juga. Saya biasanya hanya menggunakan 10 hingga 20 untuk kotak pengembangan.
ddelrio1986
Sangat lambat untuk memeriksa port yang digunakan pada windows, kesalahan keluar begitu batasan baris perintah muncul.
Alexander T
@AlexanderT berapa banyak port yang ingin Anda teruskan?
ddelrio1986
@ ddelrio1986 sekitar seribu.
Alexander T
2

Contoh 'untuk' di atas benar untuk melakukan rentang inklusif. Jika Anda ingin meneruskan satu set port tertentu, Anda perlu menggunakan operator Ruby .each.

Variabel dapat masuk ke dalam atau di luar loop Vagrant.configure utama.

UDP_PORTS_LIST={
  "5000" => 5000, # Some service
}

TCP_PORTS_LIST={
  "5900" => 5900, # VNC
}

Loop harus masuk ke dalam blok Vagrant.configure untuk VM yang ingin Anda petakan (ingat Anda dapat memiliki beberapa VM dalam satu Vagrantfile tunggal).

UDP_PORTS_LIST.each do |guest, host|
  config.vm.network "forwarded_port", guest: "#{guest}", host: "#{host}", protocol: "udp"
end
TCP_PORTS_LIST.each do |guest, host|
  config.vm.network "forwarded_port", guest: "#{guest}", host: "#{host}", protocol: "tcp"
end
dragon788
sumber