Vagrantはポートの範囲を転送します


20

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

config.vm.forward_port 80, 4567

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



ではない正確に。一度に1つのポートではなく、開いているポートの範囲を指定できるかどうかを知りたい。おそらく著者に直接連絡するでしょう。
ドングリ

4
Vagrantfileは単なるRubyスクリプトであるため、必要なすべてのポートに対してconfig.vm.forward_portを実行するforループを作成できる場合があります。私はRubyに堪能ではありませんので、コードを実際に手伝うことはできません。
ラサー

回答:


27

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

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

上記のループは、64000〜65535のすべてのポートをゲスト上のまったく同じポートに転送します(64000と65535が含まれていることに注意してください)。


2
私のコンピューターでは、1000個のポートをマップするのに少し時間がかかりました。本当に多くのポートをマップする必要がない限り、50個のポートをマップする必要があります。
アントワーヌ

@アントワーヌはい、私もそれが非常に遅いことに気づきました。私は通常、開発用ボックスに10〜20個だけを使用します。
ddelrio1986

Windows上で使用するポートをチェックすることが非常に遅い、中のコマンドラインの制限キック1回のエラー。
アレクサンダーT

@AlexanderTいくつのポートを転送しようとしていますか?
ddelrio1986

@ ddelrio1986千人くらい。
アレクサンダーT

2

上記の「for」の例は、包括的範囲の実行に適しています。特定のポートのセットを転送する場合は、Ruby .each演算子を使用する必要があります。

変数は、メインのVagrant.configureループの内側または外側に移動できます。

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

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

ループは、マップするVMのVagrant.configureブロック内に配置する必要があります(1つの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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.