web-dev-qa-db-ja.com

ある範囲のポートをVagrant転送

Vagrant 1.2.1以降を使用してポートの範囲を転送する方法はありますか?私はあなたが使用することにより、任意の数のポートを個別に転送できることを知っています

config.vm.forward_port 80, 4567

または、答えは単にそのようなことをするために浮浪者を使わないのですか?

20
Acorn

誰かがVagrantfileでループを実行する方法の例が必要な場合は、次のとおりです。

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

上記のループは、64000と65535の間のすべてのポートをゲストのまったく同じポートに転送します(64000と65535は包括的であることに注意してください)。

27
ddelrio1986

上記の「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
2
dragon788