Vagrant inoltra una serie di porte


20

Esiste un modo per inoltrare un intervallo di porte utilizzando Vagrant 1.2.1 o versioni successive? So che puoi inoltrare qualsiasi numero di porte singolarmente utilizzando

config.vm.forward_port 80, 4567

Oppure, la risposta è semplicemente non usare il vagabondo per fare una cosa del genere?



Non esattamente. Volevo sapere se è possibile specificare un intervallo di porte da aprire, piuttosto che uno alla volta. Forse contatterò direttamente l'autore.
Ghianda

4
Poiché il Vagrantfile è solo uno script Ruby, potresti essere in grado di scrivere un ciclo for che esegue config.vm.forward_port per ogni porta desiderata. Non parlo correntemente Ruby, quindi non posso davvero aiutarti con il codice.
Lasar,

Risposte:


27

Se qualcuno ha bisogno di un esempio di come eseguire il loop nel Vagrantfile qui è:

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

Il loop sopra inoltrerà tutte le porte tra 64000 e 65535 alla stessa porta esatta sul guest (si noti che 64000 e 65535 sono inclusi).


2
Sul mio computer il vagabondo era un po 'lungo per mappare 1000 porte. A meno che tu non abbia davvero bisogno di così tante porte mappate, dovresti mappare 50 porte.
Antoine,

@Antoine sì, ho notato che è anche molto lento. Normalmente finisco per usare solo 10-20 per le caselle di sviluppo.
ddelrio1986,

Estremamente lento nel controllare le porte utilizzate su Windows, errori una volta che entra in gioco la limitazione della riga di comando.
Alexander T

@AlexanderT quante porte stai cercando di inoltrare?
ddelrio1986,

@ddelrio1986 circa mille.
Alexander T

2

Gli esempi 'for' sopra sono corretti per fare un intervallo inclusivo. Se si desidera inoltrare un set di porte specifiche, è necessario utilizzare l'operatore Ruby .each.

Le variabili possono andare all'interno o all'esterno del ciclo principale Vagrant.configure.

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

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

I loop devono essere inseriti nel blocco Vagrant.configure per la VM per cui si desidera mapparli (ricordare che è possibile avere più VM in un singolo file Vagrant).

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.