AVERTISSEMENT: la solution ci-dessous fonctionne pour Vagrant 1.0.x mais pas pour Vagrant 1.1+.
Vagrant utilise le fichier ".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. Cela ressemble à ceci si une seule VM existe:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
est le nom de la machine virtuelle par défaut (si vous n'utilisez pas de configurations multi-VM).
Si votre machine virtuelle est en quelque sorte dissociée, vous pouvez faire la VBoxManage list vms
liste de toutes les machines virtuelles que VirtualBox connaît par son nom et son UUID. Ensuite, créez manuellement un .vagrant
fichier dans le même répertoire que le vôtre Vagrantfile
et remplissez correctement le contenu.
Exécutez vagrant status
pour vous assurer que Vagrant a pris les changements appropriés.
Remarque: ceci n'est pas officiellement pris en charge par Vagrant et Vagrant peut changer le format de .vagrant
à tout moment. Mais ceci est valable à partir de Vagrant 0.9.7 et sera valable pour Vagrant 1.0.
.vagrant/machines/{name}/{provider}/id
. En fait, la seule chose que ce fichier contient est l'UUID.Pour Vagrant 1.6.3, procédez comme suit:
1) Dans le répertoire où se trouve votre Vagrantfile, exécutez la commande
Vous aurez quelque chose comme ça:
2) Accédez au chemin suivant:
3) Créez un fichier appelé id avec l'ID de votre VM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4) Enregistrez le fichier et lancez vagrant
la source
id
fichier sans nouvelle ligne estecho -n '<your id here>' > id
.for box in test1 test2; do virtualboxid=$(VBoxManage list vms | grep $box | cut -d' ' -f2); echo -n $virtualboxid > .vagrant/machines/$box/virtualbox/id; done
La solution avec la version supérieure est tout à fait la même.
Mais vous devez d'abord lancer le fichier .vbox à la main pour qu'il apparaisse dans
VBoxManage list vms
Ensuite, vous pouvez vérifier le
.vagrant/machines/default/virtualbox/id
pour vérifier que l'uuid est le bon.la source
id
fichier, vous devez le conserver sur une seule ligne. Pour une raison quelconque, il n'aime pas la nouvelle ligne à la fin (mon éditeur de texte l'ajoute par défaut, j'ai donc eu des problèmes)..vagrant
fichier au format 1.0, et il l'a mis à jour automatiquement. Dès que je l'ai fait, il a renommé l'ancienne VM avec le nouveau nom du répertoire du projet.Eu le problème aujourd'hui, mon
.vagrant
dossier était manquant et a constaté qu'il y avait quelques étapes de plus que la simple définition de l'identifiant:Définissez l'identifiant:
Trouvez l'id et installez-le
{project-folder}/.vagrant/machines/default/virtualbox/id
.Notez que cela
default
peut être différent s'il est défini dans votreVagrantfile
exempleconfig.vm.define "someothername"
.Arrêtez la machine de provisionner:
Créez un fichier nommé
action_provision
dans le mêmeid
répertoire que le fichier, définissez son contenu sur: en1.5:{id}
remplaçant{id}
par l'ID trouvé à l'étape 1.Configurer 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 devrez en générer un nouveau.nommez-le
private_key
.vagrant ssh
puis copiez leprivate_key.pub
dans/home/vagrant/.ssh/authorized_keys
.la source
Mise à jour avec le même problème aujourd'hui avec Vagrant 1.7.4:
Par exemple, pour associer la boîte 'vip-quickstart_default_1431365185830_12124' à vagrant.
la source
Pour les configurations multi-VM, cela ressemblerait à ceci:
Vous pouvez obtenir les noms de VM à partir du Vagrantfile utilisé pour créer ces VM. Recherchez cette ligne:
"web" est le nom de la VM dans ce cas.
la source
J'utilise Vagrant 1.8.1 sur OSX El Capitan
Mon VM n'était pas fermé correctement lorsque mon ordinateur redémarrait, donc quand j'essayais,
vagrant up
il créait toujours un nouveau VM. Aucune solution ici n'a fonctionné pour moi. Mais ce qui a fonctionné était une variante de la réponse d' InmmurilloDonc, au lieu de créer en
.vagrant/machines/default/virtualbox/id
fonction de l'id de l'exécutionVBoxManage list vms
. J'ai dû mettre à jour l'identifiant dans.vagrant/machines/local/virtual_box/id
J'ai une ligne unique qui fait essentiellement cela 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 dont j'ai besoin pour commencer à courir
VBoxManage list vms
la source
Ceci est modifié à partir de la réponse de @ Petecoop .
Exécutez
vagrant halt
si vous n'avez pas encore fermé la boîte.Ensuite, listez vos boîtes virtuelles:
VBoxManage list vms
Il listera toutes vos boîtes virtuelles. Identifier la zone que vous souhaitez revenir à et saisir l'identifiant entre les accolades:
{}
.Puis éditez le fichier d'id du projet:
sudo nano .vagrant/machines/default/virtualbox/id
(à partir du répertoire du projet)Remplacez-le par l'identifiant que vous avez copié dans la liste des VB.
Essayez
vagrant reload
.Si cela ne fonctionne pas et se bloque sur l'autorisation SSH (où j'ai trébuché), copiez la clé publique non sécurisée du git vagabond . Remplacez le contenu de
/.vagrant/machines/default/virtualbox/private_key
. Sauvegarde de l'original bien sûr:cp private_key private_key-bak
.Puis cours
vagrant reload
. Il dira qu'il a identifié la clé non sécurisée et en crée une nouvelle.Vous devriez être prêt.
la source
Dans Vagrant 1.9.1:
J'avais une VM dans Virtual Box nommée `` Ubuntu 16.04.1 '', donc je l'ai emballée comme une boîte vagabonde avec:
répond avec ...
la source
Je suis sur macos et j'ai constaté que la suppression des .locks sur les boîtes a résolu mon problème.
Pour certaines raisons
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 problème mineur, il a démarré dans grub, j'ai donc dû appuyer une fois sur Entrée, je ne sais pas si cela reste, mais je le saurai assez tôt.
J'utilise vagrant 1.7.4 et virtualbox 5.0.2
la source