Чекаючи вперед ряд портів


20

Чи є спосіб переслати діапазон портів за допомогою vagrant 1.2.1 або вище? Я знаю, що ви можете пересилати будь-яку кількість портів окремо, використовуючи

config.vm.forward_port 80, 4567

Або у відповіді просто не використовуйте бродячих, щоб зробити таке?



Не зовсім. Хотів дізнатися, чи можна вказати діапазон портів, які будуть відкритими, а не один за одним. Можливо, я зв’яжусь із автором безпосередньо.
Жолудь

4
Оскільки Vagrantfile - це лише сценарій Ruby, ви зможете написати цикл для циклу, який виконує config.vm.forward_port для кожного потрібного порту. Я не вільно володію Рубі, тому не можу вам допомогти з кодом.
Ласар

Відповіді:


27

Якщо комусь потрібен приклад, як зробити цикл у вашому Vagrantfile, ось він:

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

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


2
На моєму комп’ютері бродячий був трохи довгий, щоб зіставити 1000 портів. Якщо вам дійсно не потрібно стільки зіставлених портів, вам слід зіставити 50 портів.
Антуан

@Antoine Так, я помітив, що це дуже повільно. Як правило, я використовую лише 10-20 для вікон розробки.
ddelrio1986

Дуже повільно перевіряти використовувані порти на Windows, помилки, коли починається обмеження командного рядка.
Олександр Т

@AlexanderT, скільки портів ви намагаєтеся переслати?
ddelrio1986

@ ddelrio1986 близько тисячі.
Олександр Т

2

Наведені вище приклади "для" є правильними для виконання інклюзивного діапазону. Якщо ви хочете переслати набір певних портів, вам потрібно скористатися оператором Ruby .each.

Змінні можуть переходити всередину або зовні основного контуру конфігурації Vagrant.configure.

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

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

Цикли повинні пройти всередині блоку Vagrant.configure для VM, для якого потрібно їх відобразити (пам’ятайте, що в одному 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.