Question Vagabond transmettre une gamme de ports


Existe-t-il un moyen de transférer une gamme de ports à l'aide de vagrant 1.2.1 ou supérieur? Je sais que vous pouvez transférer n'importe quel nombre de ports individuellement en utilisant

config.vm.forward_port 80, 4567

Ou bien, la réponse est-elle simplement de ne pas utiliser vagabond pour faire une telle chose?


20
2018-06-28 18:34


origine


est-ce que cela aide? docs.vagrantup.com/v2/networking/forwarded_ports.html - dawud
Pas exactement. Je voulais savoir si vous pouviez spécifier une plage de ports à ouvrir plutôt qu'un à la fois. Je contacterai peut-être l'auteur directement. - Acorn
Comme le fichier Vagrant est juste un script Ruby, vous pourrez peut-être écrire une boucle for qui exécute config.vm.forward_port pour chaque port de votre choix. Je ne parle pas couramment Ruby, je ne peux donc pas vraiment vous aider avec le code. - Lasar
Je vais essayer ça. Merci. - Acorn


Réponses:


Si quelqu'un a besoin d'un exemple sur la façon de faire la boucle dans votre Vagrantfile, c'est:

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

La boucle ci-dessus transfère tous les ports compris entre 64000 et 65535 vers le même port exact sur l'invité (notez que 64000 et 65535 sont inclus).


27
2018-03-13 14:47



Sur mon ordinateur, vagrant était un peu long pour mapper 1000 ports. Sauf si vous avez vraiment besoin de tant de ports mappés, vous devez mapper 50 ports. - Antoine
@ Antoine Oui, j'ai remarqué que c'est aussi très lent. Je finis normalement avec 10 à 20 pour les boîtes de développement. - ddelrio1986
Extrêmement lent à vérifier les ports utilisés sur Windows, erreurs dès que la limitation de la ligne de commande entre en jeu. - Alexander T
@AlexanderT combien de ports essayez-vous de transférer? - ddelrio1986
@ ddelrio1986 environ un millier. - Alexander T


Les exemples 'for' ci-dessus sont corrects pour faire une plage inclusive. Si vous souhaitez transférer un ensemble de ports spécifiques, vous devez utiliser l'opérateur Ruby .each.

Les variables peuvent aller à l'intérieur ou à l'extérieur de la boucle principale Vagrant.configure.

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

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

Les boucles doivent être insérées dans le bloc Vagrant.configure de la machine virtuelle pour laquelle vous souhaitez les mapper (rappelez-vous que vous pouvez avoir plusieurs machines virtuelles dans un seul fichier 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

2
2018-01-23 16:01