web-dev-qa-db-fra.com

Comment exporter une machine virtuelle Vagrant pour la transférer

J'ai une boîte vagabonde en place (configurée avec une pile LAMP). Je dois le transférer sur un autre PC. Comment puis-je l'exporter? Je suppose que je peux obtenir un fichier (ou des fichiers) qui peuvent être copiés sur un autre PC, afin que je puisse exécuter une commande pour importer la boîte vagrant.

98
Eugene

Vous avez deux façons de faire cela, je l'appellerai comme sale et comme propre :

1. Le chemin sale

Créez une boîte à partir de votre environnement virtuel actuel, en utilisant la commande vagrant package:

http://docs.vagrantup.com/v2/cli/package.html

Copiez ensuite la boîte sur l’autre ordinateur, ajoutez-la en utilisant vagrant box add et exécutez-la en utilisant vagrant up comme d’habitude.

N'oubliez pas que les fichiers de votre répertoire de travail (celui avec le Vagrantfile) sont partagés au démarrage de la machine virtuelle. Vous devez donc également les copier sur l'autre ordinateur.

2. La manière propre

Théoriquement, il ne devrait jamais être nécessaire d'exporter/importer avec Vagrant. Si vous avez la clairvoyance d'utiliser le provisioning pour configurer l'environnement virtuel (chef, marionnette, ansible) et un système de contrôle de version tel que git pour votre répertoire de travail, copier un environnement serait alors simple:

git clone <your_repo>
vagrant up
111
Emyl

Mon disque dur de mon Mac émettait des bips sonores au milieu d'un projet, j'ai donc décidé d'installer un disque SSD. Je devais déplacer mon projet d'un disque à un autre. Quelques points à considérer:

  • Je suis vagabond avec une virtualbox sur un Mac
  • J'utilise git

C'est ce qui a fonctionné pour moi:

1.) Copy your ~/.vagrant.d directory to your new machine.
2.) Copy your ~/VirtualBox\ VMs directory to your new machine. 
3.) In VirtualBox add the machines one by one using **Machine** >> **Add**
4.) Run `vagrant box list` to see if vagrant acknowledges your machines. 
5.) `git clone my_project`
6.) `vagrant up`

J'ai eu quelques problèmes avec VB Ajouts d'invités.

enter image description here

Je les ai fixés avec cette solution .

26
Ken Prince

C'est en fait assez simple

  1. Installez boîte virtuelle et vagrant sur la machine distante
  2. Enveloppez votre machine à vagabond

    vagrant package --base [machine name as it shows in virtual box] --output /Users/myuser/Documents/Workspace/my.box

  3. copier la boîte sur votre télécommande

  4. initialiser la boîte sur votre machine distante en exécutant

    vagrant init [machine name as it shows in virtual box] /Users/myuser/Documents/Workspace/my.box

  5. Exécuter vagrant up

16
Stefan Diabo

Le moyen le plus simple consiste à empaqueter la boîte Vagrant, puis à la copier (par exemple, scp ou rsync) sur l’autre PC, l’ajouter et vagrant up ;-)

Pour des étapes détaillées, consultez ceci =>Existe-t-il un moyen de cloner une boîte vagabonde déjà installée

6
Terry Wang

Aucune des réponses ci-dessus n'a fonctionné pour moi. Cela fait 2 jours que je prépare le moyen de migrer une machine Vagrant + VirtualBox d’un ordinateur à un autre ... C’est possible!

Tout d'abord, vous devez comprendre que la machine virtuelle est séparée de votre dossier sync/shared. Ainsi, lorsque vous emballez votre machine, vous l’emballez sans vos fichiers, mais avec les bases de données.

Qu'as tu besoin de faire:

1- Ouvrez le CMD de votre ordinateur 1 Ordinateur hôte (Ligne de commande. Ouvrez-le en tant qu'administrateur avec le bouton droit -> "Exécuter en tant qu'administrateur") et allez dans vos fichiers d'installation vagabonds. Sur mon cas: C:/VVV Vous verrez votre Vagrantfile ainsi que ces dossiers:

/config/
/database/
/log/
/provision/
/www/
Vagrantfile
...

Le dossier/www/contient mon dossier de synchronisation avec mes domaines de développement. Vous pouvez avoir votre dossier de synchronisation ailleurs, assurez-vous simplement de bien comprendre ce que vous faites. Aussi/config et/database sont des dossiers de synchronisation.

2- Exécutez cette commande: vagrant package --vagrantfile Vagrantfile

(Cette commande effectue un package de votre machine virtuelle en utilisant votre configuration Vagrantfile.)

Voici ce que vous pouvez lire dans la documentation de Vagrant sur la commande:

Une idée fausse répandue est que l'option --vagrantfile conditionnera un fichier Vagrant utilisé lorsque vagrant init est utilisé avec cette boîte. Ce n'est pas le cas. Au lieu de cela, un fichier Vagrant est chargé et lu dans le cadre du processus de chargement Vagrant lorsque la boîte est utilisée. Pour plus d'informations, consultez l'ordre de chargement de Vagrantfile.

https://www.vagrantup.com/docs/cli/package.html

Une fois terminé, vous aurez un fichier package.box.

3- Copiez tous ces fichiers (/ config,/database, Vagrantfile, package.box, etc.) et collez-les sur votre ordinateur 2 juste à vouloir installer votre machine virtuelle (dans mon cas, D:/VVV).

Maintenant, vous avez une copie de tout ce dont vous avez besoin sur votre ordinateur 2 Host.

4- lancez ceci: vagrant box add package.box --name VVV

(Le --name est utilisé pour nommer votre machine virtuelle. Dans mon cas, il s'appelle VVV) (Vous pouvez utiliser --force si vous avez déjà une machine virtuelle avec ce nom et souhaitez l'écraser. (Utilisez-le avec précaution!))

Cela décompactera votre nouvelle machine virtuelle vagabonde.

5- Une fois terminé, exécutez: vagrant up

La machine va s'installer et vous devriez la voir sur le "Gestionnaire de la machine virtuelle Oracle". Si vous ne voyez pas la machine virtuelle, essayez d'exécuter la zone Oracle VM en tant qu'administrateur (clic droit -> Exécuter en tant qu'administrateur).

Vous pouvez maintenant tout avoir bien, mais n'oubliez pas de voir si vos hôtes sont comme vous le souhaitiez:

c:/windows/system32/hosts

6- C'est peut-être une bonne idée de copier votre fichier hôte de votre ordinateur 1 sur votre ordinateur 2. Ou de copier les lignes dont vous avez besoin. Dans mon cas, ce sont les hôtes dont j'ai besoin:

192.168.50.4 test.dev
192.168.50.4 vvv.dev
...

Où 192.168.50.4 est l'IP de ma machine virtuelle et où test.dev et vvv.dev développent des hôtes.

J'espère que cela pourra vous aider :) Je serai heureux si vous recevez vos commentaires.

Quelques particularités de mon cas que vous pouvez trouver:

Quand j'ai couru vers le haut, il y avait un problème avec MySQL, cela ne fonctionnait pas. Je devais exécuter sur le serveur virtuel (clic droit sur la machine virtuelle Oracle -> Afficher la console): apt-get install mysql-server

Après cela, je me suis à nouveau retrouvé vagabond et tout fonctionnait mais sans données sur les bases de données. J'ai donc fait un mysqldump all-tables à partir de l'ordinateur 1 et les télécharger sur l'ordinateur 2.

AUTRES NOTES: Ma machine virtuelle ne se trouve pas exactement sur les ordinateurs 1 et 2. Par exemple, j’ai fait une configuration interne il y a quelque temps pour utiliser NFS (pour accélérer dans les dossiers de synchronisation du serveur) et j’ai dû relancer cette commande sur l’ordinateur 2: vagrant plugin install vagrant-winnfsd

2
gtamborero

Comme indiqué dans

Comment puis-je changer où Vagrant cherche son disque dur virtuel?

l'état de la machine virtuelle est stocké dans un dossier VirtualBox prédéfini. La copie de la machine (dossier) correspondante à côté de votre projet vagrant sur votre autre hôte doit préserver l'état de votre machine virtuelle.

1
Manuel

En 2019, il existe une sous-commande: vagrant box repackage

vagrant box repackage --help 
Usage: vagrant box repackage <name> <provider> <version>
    -h, --help                       Print this help

Vous pouvez trouver nameprovider et version en exécutant vagrant box list

vagrant box list
macinbox (virtualbox, 10.14.5)

La sortie de vagrant box repackage est un fichier appelé package.box qui est essentiellement un fichier tgz dont le contenu peut être répertorié comme suit:

tar tzf package.box
./metadata.json
./box.ovf
./Vagrantfile
./box-disk001.vmdk
0
Tiago Lopo