Назад | Перейти на главную страницу

Бродячая переадресация на ряд портов

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

config.vm.forward_port 80, 4567

Или ответ просто: не использовать бродягу для подобных вещей?

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

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

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

Приведенные выше примеры "для" подходят для включения диапазона. Если вы хотите перенаправить набор определенных портов, вам нужно использовать оператор Ruby .each.

Переменные могут входить внутри или вне основного цикла Vagrant.configure.

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

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

Циклы должны проходить внутри блока Vagrant.configure для виртуальной машины, для которой вы хотите их сопоставить (помните, что вы можете иметь несколько виртуальных машин в одном Vagrantfile).

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