web-dev-qa-db-fra.com

Vagrant ne peut pas transférer les ports spécifiés sur ce VM

J'ai Vagrant utilisé pour un profil de boîte. Maintenant, je veux utiliser Vagrant pour une autre boîte (b2), mais il dit que l'instance de bioiq consomme le port redirigé 2222 (ce qu'il est).

Maintenant, si je configure b2 avec ce qui suit, Vagrant essaie toujours d'utiliser 2222.

Vagrant.configure("2") do |config|

  config.vm.box = 'precise32'
  config.vm.box_url = 'http://files.vagrantup.com/precise32.box'

  config.vm.network :forwarded_port, guest: 22, Host: 2323

  # Neither of these fix my problem 
  # config.vm.network :private_network, type: :dhcp 
  # config.vm.network :private_network, ip: "10.0.0.200"
end

J'ai essayé différentes façons à partir d'autres questions SO pour définir le : forwarded_port (voir ici et ici ). J'ai également essayé ceci Google Group post , en vain. Je reçois toujours ce message.

Vagrant cannot forward the specified ports on this VM, since they
would collide with some other application that is already listening
on these ports. The forwarded port to 2222 is already in use
on the Host machine.

To fix this, modify your current projects Vagrantfile to use another
port. Example, where '1234' would be replaced by a unique Host port:

  config.vm.network :forwarded_port, guest: 22, Host: 1234

Sometimes, Vagrant will attempt to auto-correct this for you. In this
case, Vagrant was unable to. This is usually because the guest machine
is in a state which doesn't allow modifying port forwarding.

Je ne sais pas pourquoi Vagrant ignore systématiquement mes directives. La configuration publiée ne fonctionne pas. Quelqu'un a-t-il surmonté cela?

32
Nutritioustim

En cas de port ssh, Vagrant résout les collisions de port par lui-même:

==> ubuntu64: Fixed port collision for 22 => 2222. Now on port 2200.

Cependant, vous pouvez toujours créer une collision inévitable en:

  1. Création du premier env vagabond (il obtiendra le port 2222 pour ssh)
  2. Suspendez cet env (vagrant suspend)
  3. Créez un deuxième env vagabond (il obtiendra à nouveau le port 2222, car il est maintenant inutilisé)
  4. Essayez de réactiver le premier environnement en vagrant up

Vous obtiendrez le message d'erreur que vous obtenez maintenant.

La solution consiste à utiliser vagrant reload, pour laisser vagabonder ignorer l'état de la machine virtuelle (ce qui signifie qu'il l'arrêtera à la dure - soyez donc prudent si vous avez du travail non enregistré là-bas) et redémarrez l'environnement, résolvant toutes les collisions de ports ssh sur le chemin par lui-même.

78
m1keil

Je viens de rencontrer un problème sur les versions actuelles de Mac OSX (10.9.4) et VirtualBox (4.3.14) où le port ssh par défaut 2222 est à la fois inutilisé et non lié par vagabond. Cela provoquait un dépassement indéfini de la connexion ssh de vérification de l'intégrité.

Ce n'est pas exactement le même problème, mais un transfert explicite l'a résolu:

config.vm.network :forwarded_port, guest: 22, Host: 2201, id: "ssh", auto_correct: true

Cette suggestion provient d'un commentaire sur le Vagrant GitHub numéro 174 .

Il n'est pas clair si le port redirigé vers 22 est détecté ou si l'ID est utilisé, mais cela fonctionne pour moi.

15
botimer