Vagrant chuyển tiếp một loạt các cổng


20

Có cách nào để chuyển tiếp một loạt các cổng bằng cách sử dụng 1.2.1 hoặc cao hơn không? Tôi biết rằng bạn có thể chuyển tiếp bất kỳ số lượng cổng riêng lẻ bằng cách sử dụng

config.vm.forward_port 80, 4567

Hoặc, câu trả lời đơn giản là không sử dụng vagrant để làm điều đó?



Không chính xác. Muốn biết nếu bạn có thể chỉ định một loạt các cổng sẽ được mở, thay vì một cổng tại một thời điểm. Có lẽ tôi sẽ liên hệ trực tiếp với tác giả.
Acorn

4
Vì Vagrantfile chỉ là một tập lệnh Ruby, nên bạn có thể viết một vòng lặp for thực thi config.vm.forward_port cho mọi cổng bạn muốn. Tôi không rành về Ruby, vì vậy tôi thực sự không thể giúp bạn viết mã.
Lasar

Câu trả lời:


27

Nếu bất cứ ai cần một ví dụ về cách thực hiện vòng lặp trong Vagrantfile của bạn thì đây là:

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

Vòng lặp trên sẽ chuyển tiếp tất cả các cổng trong khoảng từ 64000 đến 65535 đến cùng một cổng chính xác trên máy khách (lưu ý rằng 64000 và 65535 đã được bao gồm).


2
Trên máy tính của tôi, hơi dài để lập bản đồ 1000 cổng. Trừ khi bạn thực sự cần rất nhiều cổng được ánh xạ, bạn nên ánh xạ 50 cổng.
Antoine

@Antoine vâng tôi đã nhận thấy rằng nó cũng rất chậm. Tôi thường kết thúc chỉ bằng cách sử dụng 10 đến 20 cho các hộp phát triển.
ddelrio1986

Rất chậm để kiểm tra các cổng đã sử dụng trên windows, lỗi khi giới hạn dòng lệnh khởi động.
Alexander T

@AlexanderT bạn đang cố gắng chuyển tiếp bao nhiêu cổng?
ddelrio1986

@ ddelrio1986 khoảng một ngàn.
Alexander T

2

Các ví dụ 'cho' ở trên là chính xác để thực hiện một phạm vi bao gồm. Nếu bạn muốn chuyển tiếp một tập hợp các cổng cụ thể, bạn cần sử dụng toán tử Ruby .each.

Các biến có thể đi vào bên trong hoặc bên ngoài vòng lặp Vagrant.configure chính.

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

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

Các vòng lặp cần phải đi vào bên trong khối Vagrant. Thông minh cho VM mà bạn muốn ánh xạ chúng (hãy nhớ rằng bạn có thể có nhiều VM trong một 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.