Vagrant 转发一系列端口

Vagrant 转发一系列端口

有没有办法使用 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

相关内容