22 votes

Vagrant transmet une série de ports

Existe-t-il un moyen de transférer une série de ports en utilisant vagrant 1.2.1 ou une version plus récente ? 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 vagrant pour faire une telle chose ?

0 votes

0 votes

Pas exactement. Je voulais savoir si vous pouviez spécifier une gamme de ports à ouvrir, plutôt qu'un à la fois. Je vais peut-être contacter l'auteur directement.

5 votes

Comme le fichier Vagrantfile n'est qu'un script Ruby, vous pourriez être en mesure d'écrire un script qui exécute config.vm.forward_port pour chaque port que vous voulez. Je ne maîtrise pas Ruby, donc je ne peux pas vraiment vous aider avec le code.

31voto

Miguel Ángel Points 51

Si quelqu'un a besoin d'un exemple de la façon de faire la boucle dans votre fichier Vagrant, le voici :

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

La boucle ci-dessus transmettra tous les ports entre 64000 et 65535 au même port sur l'invité (notez que 64000 et 65535 sont inclus).

2 votes

Sur mon ordinateur, vagrant était un peu long pour cartographier 1000 ports. À moins que vous n'ayez vraiment besoin d'autant de ports mappés, vous devriez mapper 50 ports.

0 votes

@Antoine oui j'ai remarqué que c'est très lent aussi. Je finis normalement par n'utiliser que 10 à 20 pour les boîtes de développement.

0 votes

Extrêmement lent pour vérifier les ports utilisés sous Windows, se bloque dès que la limitation de la ligne de commande entre en jeu.

2voto

dragon788 Points 706

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

Les variables peuvent être placées à l'intérieur ou à l'extérieur de la boucle principale de Vagrant.configure.

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

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

Les boucles doivent être placées dans le bloc Vagrant.configure de la VM pour laquelle vous souhaitez les mapper (n'oubliez pas que vous pouvez avoir plusieurs VM 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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X