Вопрос: Vagrant продвигает ряд портов


Есть ли способ перенаправить ряд портов с использованием бродяг 1.2.1 или выше? Я знаю, что вы можете пересылать любое количество портов по отдельности, используя

config.vm.forward_port 80, 4567

Или, ответ просто не использует бродягу, чтобы делать такую ​​вещь?


18
2018-06-28 18:34


Источник


Помогает ли это? docs.vagrantup.com/v2/networking/forwarded_ports.html - dawud
Не совсем. Хотелось узнать, можете ли вы указать диапазон портов, которые должны быть открыты, а не по одному за раз. Возможно, я свяжусь с автором напрямую. - Acorn
Поскольку Vagrantfile - это просто скрипт Ruby, вы можете написать цикл for, который выполняет config.vm.forward_port для каждого порта, который вы хотите. Я не владею Ruby, поэтому я не могу помочь вам с кодом. - Lasar
Я попробую это. Благодарю. - Acorn


Ответы:


Если кому-то нужен пример того, как сделать цикл в вашем Vagrantfile, это:

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

Вышеупомянутый цикл будет перенаправлять все порты между 64000 и 65535 на тот же самый порт на гостевой (обратите внимание, что 64000 и 65535 включены).


27
2018-03-13 14:47



На моем компьютере бродяга было немного длиннее, чтобы нанести 1000 портов. Если вам действительно не нужно столько отображаемых портов, вы должны отобразить 50 портов. - Antoine
@Antoine да, я заметил, что это очень медленно. Обычно я использую только 10 - 20 для ящиков разработки. - ddelrio1986
Чрезвычайно медленно проверять используемые порты на окнах, ошибки выходят, когда ограничение командной строки срабатывает. - Alexander T
@AlexanderT Сколько портов вы пытаетесь переправить? - ddelrio1986
@ ddelrio1986 около тысячи. - Alexander T


Приведенные выше примеры «верны» для верного диапазона. Если вы хотите переслать набор определенных портов, вам необходимо использовать оператор Ruby .each.

Переменные могут перемещаться внутри или снаружи основного цикла Vagrant.configure.

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

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

Петли должны зайти в блок Vagrant.configure для виртуальной машины, на которую вы хотите их сопоставить (помните, что вы можете иметь несколько виртуальных машин в одном файле 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

2
2018-01-23 16:01