有没有办法使用 vagrant 1.2.1 或更高版本转发一系列端口?我知道你可以使用以下方法单独转发任意数量的端口
config.vm.forward_port 80, 4567
或者,答案就是不要使用 vagrant 来做这样的事情?
答案1
如果有人需要如何在 Vagrantfile 中执行循环的示例,这里是:
for i in 64000..65535
config.vm.network :forwarded_port, guest: i, host: i
end
上述循环将把 64000 到 65535 之间的所有端口转发到客户机上的完全相同的端口(请注意,64000 和 65535 是包含在内的)。
答案2
上面的“for”示例对于执行包含范围的操作是正确的。如果您想要转发一组特定端口,则需要使用 Ruby .each 运算符。
变量可以位于主 Vagrant.configure 循环的内部或外部。
UDP_PORTS_LIST={
"5000" => 5000, # Some service
}
TCP_PORTS_LIST={
"5900" => 5900, # VNC
}
循环需要进入您想要映射它们的 VM 的 Vagrant.configure 块内(请记住,您可以在一个 Vagrantfile 中拥有多个 VM)。
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