Vagrant encaminhar uma gama de portas


20

Existe uma maneira de encaminhar uma série de portas usando o vagrant 1.2.1 ou superior? Eu sei que você pode encaminhar qualquer número de portas individualmente usando

config.vm.forward_port 80, 4567

Ou a resposta simplesmente não usa vagabundos para fazer uma coisa dessas?



Não exatamente. Queria saber se você pode especificar um intervalo de portas a serem abertas, em vez de uma por vez. Talvez eu entre em contato diretamente com o autor.
Acorn

4
Como o Vagrantfile é apenas um script Ruby, você pode escrever um loop for que executa config.vm.forward_port para todas as portas que você deseja. Eu não sou fluente em Ruby, então não posso realmente ajudá-lo com o código.
Lasar

Respostas:


27

Se alguém precisar de um exemplo de como fazer o loop no seu arquivo Vagrant, aqui está:

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

O loop acima encaminhará todas as portas entre 64000 e 65535 para a mesma porta exata no convidado (observe que 64000 e 65535 são inclusivas).


2
No meu computador, o vagrant era um pouco longo para mapear 1000 portas. A menos que você realmente precise de tantas portas mapeadas, você deve mapear 50 portas.
Antoine

@ Antonine sim, eu notei que é muito lento também. Normalmente, acabo usando de 10 a 20 para caixas de desenvolvimento.
Ddelrio1986

Extremamente lento para verificar as portas usadas em janelas, erros de uma vez a limitação de linha de comando entra em ação.
Alexander T

@AlexanderT, quantas portas você está tentando encaminhar?
Ddelrio1986

@ ddelrio1986 cerca de mil.
Alexander T

2

Os exemplos 'for' acima estão corretos para realizar um intervalo inclusivo. Se você deseja encaminhar um conjunto de portas específicas, é necessário usar o operador Ruby .each.

As variáveis ​​podem ir dentro ou fora do loop principal do Vagrant.configure.

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

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

Os loops precisam ir para dentro do bloco Vagrant.configure da VM para a qual você deseja mapeá-los (lembre-se de que você pode ter várias VMs em um único arquivo 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.