Frage Vagrant eine Reihe von Ports weiterleiten


Gibt es eine Möglichkeit, eine Reihe von Ports mit Vagrant 1.2.1 oder höher weiterzuleiten? Ich weiß, dass Sie beliebig viele Ports einzeln weiterleiten können

config.vm.forward_port 80, 4567

Oder, ist die Antwort einfach nicht vagrant, um so etwas zu tun?


20
2018-06-28 18:34


Ursprung


Hilft das? docs.vagrantup.com/v2/networking/forwarded_ports.html - dawud
Nicht genau. Wollte wissen, ob Sie einen Bereich von Ports angeben können, um offen zu sein, anstatt einzeln. Vielleicht werde ich den Autor direkt kontaktieren. - Acorn
Da die Vagrant-Datei nur ein Ruby-Skript ist, können Sie möglicherweise eine for-Schleife schreiben, die config.vm.forward_port für jeden gewünschten Port ausführt. Ich spreche Ruby nicht fließend, also kann ich Ihnen mit Code nicht wirklich helfen. - Lasar
Ich werde das versuchen. Vielen Dank. - Acorn


Antworten:


Wenn jemand ein Beispiel dafür benötigt, wie man die Schleife in Ihrem Vagrantfile macht, ist es hier:

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

Die obige Schleife leitet alle Ports zwischen 64000 und 65535 an genau denselben Port auf dem Gast weiter (beachten Sie, dass 64000 und 65535 inklusive sind).


27
2018-03-13 14:47



Auf meinem Computer war der Landstreicher ein bisschen lang, um 1000 Ports zu mappen. Sofern Sie nicht wirklich so viele zugeordnete Ports benötigen, sollten Sie 50 Ports zuordnen. - Antoine
@ Antoine ja ich habe gemerkt, dass es auch sehr langsam ist. Normalerweise verwende ich nur 10 bis 20 für Entwicklungsboxen. - ddelrio1986
Extrem langsam, um die verwendeten Ports in Windows zu überprüfen, kommt es zu Fehlern, sobald die Beschränkung der Befehlszeile eintritt. - Alexander T
@AlexanderT wie viele Ports möchten Sie weiterleiten? - ddelrio1986
@ ddelrio1986 um tausend. - Alexander T


Die obigen Beispiele sind korrekt, um einen umfassenden Bereich zu erstellen. Wenn Sie eine Reihe spezifischer Ports weiterleiten möchten, müssen Sie den Operator Ruby .each verwenden.

Die Variablen können innerhalb oder außerhalb der Hauptschleife von Vagrant.configure liegen.

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

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

Die Schleifen müssen in den Vagrant.configure-Block für die VM gehen, der sie zugeordnet werden sollen (denken Sie daran, dass Sie mehrere VMs in einer einzigen Vagrant-Datei haben können).

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

2
2018-01-23 16:01