Comment associer un répertoire de projet Vagrant à une VM VirtualBox existante?
D'une certaine manière mon projet Vagrant s'est dissocié de sa VirtualBox VM, de sorte que lorsque je vagrant up
Vagrant importera la base-box et créera une nouvelle machine virtuelle.
y a-t-il un moyen de rattacher de nouveau le projet Vagrant à la VM existante? Comment Vagrant associe-t-il en interne un Vagrantfile avec un répertoire VirtualBox VM?
10 réponses
avertissement: la solution ci-dessous fonctionne pour Vagrant 1.0.x mais pas Vagabond 1.1+.
Vagrant utilise le ".vagrant " dans le même répertoire que votre "Vagrantfile" pour suivre L'UUID de votre VM. Ce fichier n'existera pas si une VM n'existe pas. Le format du fichier est JSON. Il ressemble à ceci si une seule VM existe:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
est le nom du virtuel par défaut machine (si vous n'utilisez pas de configurations multi-VM).
si votre VM est quelque peu dissocié, ce que vous pouvez faire est de faire VBoxManage list vms
qui listera toutes les VM que VirtualBox connaît par leur nom et leur UUID. Puis créez manuellement un fichier .vagrant
dans le même répertoire que votre Vagrantfile
et remplissez le contenu correctement.
Run vagrant status
pour s'assurer que Vagrant a pris les bons changements.
Note: ceci n'est pas officiellement supporté par Vagrant et Vagrant peut changer le format de .vagrant
à tout moment. Mais ceci est valable aussi Vagabond 0.9.7 et sera valable pour Vagrant 1.0.
Pour Vagrant 1.6.3 faire ce qui suit:
1) dans le répertoire où se trouve votre fichier Vagrant, lancez la commande
VBoxManage list vms
vous aurez quelque chose comme ceci:
"virtualMachine" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
2) Aller au chemin suivant:
cd .vagrant/machines/default/virtualbox
3) Créer un fichier appelé id avec L'ID de votre VM xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx
4) sauvegardez le fichier et lancez vagrant up
la solution avec la version supérieure est tout à fait la même.
mais vous devez d'abord lancer le .VBOX fichier à la main afin qu'il apparaisse dans VBoxManage list vms
alors vous pouvez vérifier le .vagrant/machines/default/virtualbox/id
pour vérifier que l'uuid est le bon.
avait le problème aujourd'hui, mon dossier .vagrant
manquait et a trouvé qu'il y avait quelques étapes de plus que simplement définir l'id:
-
Définir l'id:
VBoxManage list vms
trouver l'id et mettre dans
{project-folder}/.vagrant/machines/default/virtualbox/id
.notez que
default
peut être différent si défini dans votreVagrantfile
par exempleconfig.vm.define "someothername"
. -
arrêter la machine de provision:
créer un fichier nommé
action_provision
dans le même dir que le fichierid
, définir son contenu à:1.5:{id}
remplacer{id}
par l'id trouvé à l'étape 1. -
Configuration d'une nouvelle clé publique/privée:
Vagrant utilise une clé privée stockée dans
.vagrant/machines/default/virtualbox/private_key
pour SSH dans la machine. Vous aurez besoin de générer un nouveau.ssh-keygen -t rsa
private_key
.vagrant ssh
puis copiez leprivate_key.pub
dans/home/vagrant/.ssh/authorized_keys
.
mise à Jour avec le même problème aujourd'hui avec Vagrant 1.7.4:
- utile thread à https://github.com/mitchellh/vagrant/issues/1755 et spécialement avec les commandes suivantes:
par exemple, pour jumeler la boîte 'vip-quickstart_default_1431365185830_12124' à vagrant.
$ VBoxManage list
"vip-quickstart_default_1431365185830_12124" {50feafd3-74cd-40b5-a170-3c976348de27}
$ echo -n "50feafd3-74cd-40b5-a170-3c976348de27" > .vagrant/machines/default/virtualbox/id
pour les configurations multi-VM, il ressemblerait à ceci:
{
"active":{
"web":"a1fc9ae4-5d43-49cb-be31-ab3c4f74745d",
"db":"13503bc5-76b8-4c26-95c4-32435b372212"
}
}
vous pouvez obtenir les noms de vm du fichier Vagrant utilisé pour créer ces VM. Cherchez cette ligne:
config.vm.define :web do |web_config|
et "web" est le nom de la vm dans ce cas.
In Vagrant 1.9.1:
j'ai eu une VM dans la boîte virtuelle appelée 'Ubuntu 16.04.1' donc je l'ai empaqueté comme une boîte vagabonde 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
j'utilise Vagrant 1.8.1 on OSX El Capitan
ma vm n'était pas fermée correctement lorsque mon ordinateur a redémarré, donc quand j'ai essayé vagrant up
il était toujours en train de créer une nouvelle vm. Aucune solution ici n'a fonctionné pour moi. Mais ce qui a fonctionné était une variation de réponse d'ingmmurillo
donc au lieu de créer .vagrant/machines/default/virtualbox/id
basé sur l'id d'exécution VBoxManage list vms
. J'ai eu à mettre à jour la carte d'identité .vagrant/machines/local/virtual_box/id
j'ai une doublure qui fait essentiellement cela pour moi:
echo -n `VBoxManage list vms | head -n 1 | awk '{print substr(, 2, length()-2)}'` > .vagrant/machines/local/virtualbox/id
cela suppose que la première boîte est celle dont j'ai besoin pour commencer à courir VBoxManage list vms
ceci est modifié de la réponse de @Petecoop .
Exécuter vagrant halt
si vous n'avez pas fermé la boîte encore.
alors listez vos boîtes virtuelles: VBoxManage list vms
il va énumérer toutes vos boîtes virtuelles. Identifiez la case à laquelle vous voulez revenir et saisissez l'id entre les crochets bouclés: {}
.
puis éditer le fichier d'identification du projet: sudo nano /.vagrant/machines/default/virtualbox/id
remplacez-le par l'id que vous avez copié de la liste des VBs.
Essayer vagrant reload
.
si cela ne fonctionne pas et est suspendu sur l'autorisation ssh (où j'ai trébuché), copier la clé publique non sécurisée à partir du Vagrant git . Remplacer le contenu de /.vagrant/machines/default/virtualbox/private_key
. La sauvegarde de l'original, bien sûr: cp private_key private_key-bak
.
, puis vagrant reload
. Il dira qu'il a identifié clé non sécurisée et en créer 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.
je suis sur macos et j'ai trouvé qu'en enlevant le .les verrous sur les boîtes résolu mon problème.
Pour une raison quelconque, 151920920"
vagrant halt
n'a pas enlevé ces serrures, et après avoir restauré tous mes paramètres .vagrant/machine/default / virtualbox en utilisant timemachine, en enlevant les serrures, la bonne machine a démarré.
il ne reste qu'un petit problème, 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 le saurons bien assez tôt.
je lance vagrant 1.7.4 et virtualbox 5.0.2