O Vagrant encaminha um intervalo de portas

20

Existe uma maneira de encaminhar um intervalo 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 o vagrant para fazer isso?

    
por Acorn 28.06.2013 / 20:34

2 respostas

27

Se alguém precisar de um exemplo de como fazer o loop no seu Vagrantfile, 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 do convidado (observe que 64000 e 65535 são inclusivas).

    
por 13.03.2014 / 15:47
2

Os exemplos 'for' acima estão corretos para fazer um intervalo inclusivo. Se você gostaria de encaminhar um conjunto de portas específicas, você precisa 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 dentro do bloco Vagrant.configure para a VM que você deseja mapeá-los (lembre-se que você pode ter várias VMs em um único Vagrantfile).

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
    
por 23.01.2015 / 17:01