Vagabundo reenvía una gama de puertos

20

¿Hay alguna manera de reenviar un rango de puertos usando vagabundo 1.2.1 o superior? Sé que puedes reenviar cualquier número de puertos individualmente usando

config.vm.forward_port 80, 4567

¿O la respuesta es simplemente no usar vagabundo para hacer tal cosa?

Bellota
fuente
No exactamente. Quería saber si puede especificar un rango de puertos para abrir, en lugar de uno a la vez. Quizás contactaré al autor directamente.
Bellota
44
Dado que Vagrantfile es solo un script Ruby, es posible que pueda escribir un bucle for que ejecute config.vm.forward_port para cada puerto que desee. No soy fluido en Ruby, así que realmente no puedo ayudarte con el código.
Lasar

Respuestas:

27

Si alguien necesita un ejemplo de cómo hacer el bucle en su Vagrantfile, aquí está:

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

El bucle anterior reenviará todos los puertos entre 64000 y 65535 al mismo puerto exacto del invitado (tenga en cuenta que 64000 y 65535 son inclusivos).

ddelrio1986
fuente
2
En mi computadora, el vagabundo era un poco largo para mapear 1000 puertos. A menos que realmente necesite tantos puertos asignados, debe asignar 50 puertos.
Antoine
@Antoine sí, he notado que también es muy lento. Normalmente termino usando solo 10 a 20 para cuadros de desarrollo.
ddelrio1986
Extremadamente lento para verificar los puertos usados ​​en Windows, errores una vez que se inicia la limitación de la línea de comando.
Alexander T
@AlexanderT ¿cuántos puertos está intentando reenviar?
ddelrio1986
@ ddelrio1986 alrededor de mil.
Alexander T
2

Los ejemplos 'for' anteriores son correctos para hacer un rango inclusivo. Si desea reenviar un conjunto de puertos específicos, debe utilizar el operador Ruby .each.

Las variables pueden ir dentro o fuera del ciclo principal Vagrant.configure.

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

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

Los bucles deben ir dentro del bloque Vagrant.configure para la máquina virtual para la que desea asignarlos (recuerde que puede tener varias máquinas virtuales en un solo archivo Vagrant).

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
fuente