Vagrant vorwärts eine Reihe von Ports

20

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

config.vm.forward_port 80, 4567

Oder ist die Antwort einfach, dass Sie nicht Vagabund verwenden, um so etwas zu tun?

Eichel
quelle
Nicht genau. Wollte wissen, ob Sie einen Bereich von Ports angeben können, die geöffnet sein sollen, anstatt jeweils einen. Vielleicht kontaktiere ich den Autor direkt.
Acorn
4
Da das Vagrantfile 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 nicht fließend Ruby, daher kann ich Ihnen bei Code nicht wirklich helfen.
Lasar

Antworten:

27

Wenn jemand ein Beispiel braucht, wie man die Schleife in Ihrer Vagrant-Datei durchführt, 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 enthalten sind).

ddelrio1986
quelle
2
Auf meinem Computer war Vagrant etwas lang, um 1000 Ports abzubilden. Sofern Sie nicht wirklich so viele zugeordnete Ports benötigen, sollten Sie 50 Ports zuordnen.
Antoine
@Antoine ja mir ist aufgefallen, dass es auch sehr langsam ist. Normalerweise verwende ich nur 10 bis 20 für Entwicklungsboxen.
Ddelrio1986
Sehr langsam zum Überprüfen der verwendeten Ports unter Windows. Fehler werden angezeigt, sobald die Befehlszeilenbeschränkung aktiviert ist.
Alexander T
@AlexanderT Wie viele Ports möchten Sie weiterleiten?
Ddelrio1986
@ ddelrio1986 rund tausend.
Alexander T
2

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

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

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

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

Die Schleifen müssen sich innerhalb des Vagrant.configure-Blocks für die VM befinden, für die Sie sie zuordnen möchten (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
dragon788
quelle