137 votes

Comment associer un répertoire de projet Vagrant à une VM VirtualBox existante ?

D'une manière ou d'une autre, mon projet Vagrant s'est dissocié de sa VM VirtualBox, de sorte que lorsque je vagrant up Vagrant va importer la boîte de base et créer une nouvelle machine virtuelle.

Existe-t-il un moyen de réassocier le projet Vagrant avec la VM existante ? Comment Vagrant associe-t-il en interne un fichier Vagrant à un répertoire de VM VirtualBox ?

6voto

agwntr Points 111

Pour les configurations multi-VM, cela ressemblerait à ceci :

{
   "active":{
        "web":"a1fc9ae4-5d43-49cb-be31-ab3c4f74745d",
        "db":"13503bc5-76b8-4c26-95c4-32435b372212"
   }
}

Vous pouvez obtenir les noms des VM à partir du fichier Vagrant utilisé pour créer ces VM. Recherchez cette ligne :

config.vm.define :web do |web_config|

"web" est le nom du vm dans ce cas.

0 votes

Et db est une VM par défaut ? ?

1 votes

Je ne pense pas qu'il y ait un défaut ici, juste web et db. Selon le fichier Vagrant, il y a un ordre dans lequel le vm est construit en premier.

5voto

Brendan Points 273

J'utilise Vagrant 1.8.1 sur OSX El Capitan

Mon vm n'a pas été fermé correctement lorsque mon ordinateur a redémarré, donc quand j'ai essayé vagrant up Il crée toujours un nouveau vm. Aucune solution n'a fonctionné pour moi. Mais ce qui a fonctionné, c'est une variation de réponse de ingmmurillo

Ainsi, au lieu de créer .vagrant/machines/default/virtualbox/id basé sur l'identifiant de l'exécution VBoxManage list vms . J'ai dû mettre à jour l'identifiant dans .vagrant/machines/local/virtual_box/id

J'ai un eye-liner qui fait essentiellement ça pour moi :

echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id

Cela suppose que la première boîte est celle à partir de laquelle je dois commencer à fonctionner. VBoxManage list vms

5voto

ethicka Points 114

Ce texte a été modifié à partir de La réponse de @Petecoop .

Ejecutar vagrant halt si vous n'avez pas encore fermé la boîte.

Ensuite, dressez la liste de vos boîtes virtuelles : VBoxManage list vms

Il y aura une liste de toutes vos boîtes virtuelles. Identifiez la boîte sur laquelle vous voulez revenir et saisissez l'identifiant entre les crochets : {} .

Ensuite, éditez le fichier d'identification du projet : sudo nano .vagrant/machines/default/virtualbox/id (à partir du répertoire du projet)

Remplacez-le par l'identifiant que vous avez copié de la liste des VB.

Essayez vagrant reload .

Si cela ne fonctionne pas et que l'autorisation SSH est bloquée (où j'ai trébuché), copiez la clé publique non sécurisée de l'application vagabond git . Remplacer le contenu de /.vagrant/machines/default/virtualbox/private_key . Sauvegarder l'original bien sûr : cp private_key private_key-bak .

Ensuite, exécutez vagrant reload . Il dira qu'il a identifié la clé non sécurisée et en créera une nouvelle.

default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!

Vous devriez être prêt.

3voto

PeterVermont Points 310

Dans Vagrant 1.9.1 :

J'avais une machine virtuelle dans Virtual Box nommée 'Ubuntu 16.04.1' et je l'ai emballée comme une boîte vagrante avec.. :

vagrant package --base "Ubuntu 16.04.1"

répond avec...

==> Ubuntu 16.04.1: Exporting VM...
==> Ubuntu 16.04.1: Compressing package to: blah blah/package.box

0voto

dmaij Points 1001

Je suis sur macos et j'ai trouvé que retirer les .locks sur les boîtes a résolu mon problème.

Pour une raison quelconque

vagrant halt

n'a pas supprimé ces verrous, et après avoir restauré tous mes paramètres dans .vagrant/machine/default/virtualbox en utilisant timemachine, en supprimant les verrous, la bonne machine a démarré.

Il ne reste qu'un seul problème mineur, il a démarré dans grub donc j'ai dû appuyer sur entrée une fois, je ne sais pas si cela reste, mais je vais le découvrir assez tôt.

J'utilise vagrant 1.7.4 et virtualbox 5.0.2.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X