Vagrant bir dizi bağlantı noktasını iletir


20

Vagrant 1.2.1 veya üstünü kullanarak bir dizi bağlantı noktasını iletmenin bir yolu var mı? İstediğiniz sayıda bağlantı noktasını kullanarak

config.vm.forward_port 80, 4567

Yoksa, cevap böyle bir şey yapmak için vagrant kullanmıyor mu?



Tam olarak değil. Açık olmak üzere bir seferde bir bağlantı noktası aralığı belirleyip belirleyemeyeceğinizi bilmek istedim. Belki de doğrudan yazarla iletişime geçeceğim.
Meşe

4
Vagrantfile sadece Ruby komut dosyası olduğundan, istediğiniz her bağlantı noktası için config.vm.forward_port komutunu çalıştıran bir for döngüsü yazabilirsiniz. Ruby'de akıcı değilim, bu yüzden size kod konusunda gerçekten yardım edemem.
Lasar

Yanıtlar:


27

Herkes Vagrantfile burada döngü yapmak için bir örnek gerekirse burada:

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

Yukarıdaki döngü 64000 ve 65535 arasındaki tüm bağlantı noktalarını konuktaki tam olarak aynı bağlantı noktasına iletecektir (64000 ve 65535'in dahil olduğunu unutmayın).


2
Bilgisayarımda vagrant 1000 bağlantı noktasını eşleştirmek için biraz uzundu. Gerçekten çok sayıda eşlenen porta ihtiyacınız yoksa, 50 portu eşlemelisiniz.
Antoine

@Antoine evet Ben de çok yavaş olduğunu fark ettim. Normalde geliştirme kutuları için sadece 10 ila 20 kullanıyorum.
ddelrio1986

Pencerelerde kullanılan portları kontrol etmek için son derece yavaş, komut satırı sınırlaması devreye
Alexander T

@AlexanderT kaç tane bağlantı noktası yönlendirmeye çalışıyorsunuz?
ddelrio1986

@ ddelrio1986 bin civarında.
Alexander T

2

Yukarıdaki 'for' örnekleri, kapsayıcı bir aralık yapmak için doğrudur. Bir dizi belirli bağlantı noktasını iletmek isterseniz, Ruby .each işlecini kullanmanız gerekir.

Değişkenler ana Vagrant.configure döngüsünün içine veya dışına gidebilir.

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

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

Döngülerin, eşlemek istediğiniz VM için Vagrant.configure bloğunun içine girmesi gerekir (tek bir Vagrantdosyasında birden çok VM'niz olabileceğini unutmayın).

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.