Cara mengekspor mesin virtual gelandangan untuk mentransfernya

107

Saya memiliki kotak gelandangan yang aktif dan berjalan (dikonfigurasi dengan tumpukan LAMP). Saya perlu mentransfernya ke PC lain. Bagaimana cara mengekspornya? Saya kira saya bisa mendapatkan file (atau file) yang dapat disalin ke PC lain, jadi di sana saya dapat menjalankan beberapa perintah untuk mengimpor kotak gelandangan.

Eugene
sumber
1
Saya menulis beberapa skrip untuk mengotomatiskan transfer kotak gelandangan. Lihat soniah / transfer_vagrant_boxes
Sonia Hamilton
//, Apa ada yang mencoba skrip Sonia?
Nathan Basanese
@NathanBasanese AFAIU, skrip tersebut membantu mentransfer kotak dasar, bukan VM yang berjalan yang dihasilkan, karena mereka menggunakan pengemasan ulang kotak gelandangan (lihat dokumennya)
Olivier Berger

Jawaban:

119

Anda memiliki dua cara untuk melakukan ini, saya akan menyebutnya cara kotor dan cara bersih :

1. kotor cara

Buat kotak dari lingkungan virtual Anda saat ini, menggunakan vagrant packageperintah:

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

Kemudian salin kotak tersebut ke pc lain, tambahkan menggunakan vagrant box adddan jalankan menggunakan vagrant upseperti biasa.

Perlu diingat bahwa file di direktori kerja Anda (yang memiliki Vagrantfile) dibagikan saat mesin virtual melakukan boot, jadi Anda juga perlu menyalinnya ke komputer lain.

2. bersih cara

Secara teoritis tidak perlu melakukan ekspor / impor dengan Vagrant. Jika Anda memiliki pandangan jauh ke depan untuk menggunakan provisioning untuk mengonfigurasi lingkungan virtual (chef, puppet, ansible), dan sistem kontrol versi seperti git untuk direktori kerja Anda, menyalin lingkungan pada tahap ini semudah menjalankan:

git clone <your_repo>
vagrant up
Emyl
sumber
5
Mencoba untuk menjadi admin yang bersih dan berwawasan jauh ke depan ... Anda tidak harus menempatkan iso instalasi OS di repo git Anda kan? Apakah Anda menyarankan itu, misalnya. menggunakan ansible, repo Anda akan berisi Vagrantfile dan ansible playbook. Vagrantfile akan 1. mendownload basebox dari vagrantcloud 2. menjalankan playbook yang memungkinkan untuk menyediakan / mengkonfigurasi basebox menggunakan file / repos / cloud-storage lain. Baik? Atau apakah ada yang lain di git repo?
kompor
8
Apakah akun "cara bersih" untuk database (mySQL, Wordpress) yang mungkin ada di dalam vm? Bagaimana itu bisa disinkronkan ke komputer lain?
kevllar
1
@kevllar Cara bersih berarti tidak ada informasi di luar repositori git yang diperlukan untuk memulai lingkungan dev baru. Ini menyiratkan bahwa menginstal dan mengkonfigurasi database akan diselesaikan selama penyediaan kotak gelandangan baru (melalui Chef / Puppet / what-have-you).
Hovis Biddle
2
Lantas apakah cara yang direkomendasikan oleh Hashicorp juga 'kotor'? yaitu mengemas kotak dan mengunggahnya ke server atlas? Saya tidak yakin apakah cara 'bersih' benar-benar akan meniru lingkungan yang sebenarnya, yang menurut saya adalah tujuan dari gelandangan ....
sijpkes
1
Saya tidak mengerti bagaimana cara resmi dianggap kotor. Setiap jiwa yang baik bisa menjelaskan mengapa?
thclpr
28

Hard drive di Mac saya mengeluarkan bunyi bip di tengah proyek, jadi saya memutuskan untuk memasang SSD. Saya perlu memindahkan proyek saya dari satu disk ke disk lainnya. Beberapa hal yang perlu dipertimbangkan:

  • Saya gelandangan dengan kotak virtual di Mac
  • Saya menggunakan git

Inilah yang berhasil untuk saya:

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`

Saya punya beberapa masalah dengan penambahan VB Guest.

masukkan deskripsi gambar di sini

Saya memperbaikinya dengan solusi ini .

Pangeran Ken
sumber
//, Saya akan mencoba ini, @KJPrince. Terima kasih telah memecahnya untuk kami.
Nathan Basanese
//, Saya mencobanya, tetapi saya mendapatkan kesalahan di tautan berikut ketika saya menyalin direktori VirtualBoxVM saya ke ~ / VirtualBox \ VMs, dan menjalankan vagrant box list: 0bin.net/paste/iCiaqNhU-i3bbfY2#-KDiXYcRFni1RNgNJhOBrIs/…
Nathan Basanese
18

Ini sebenarnya sangat sederhana

  1. Instal kotak virtual dan gelandangan di mesin jarak jauh
  2. Bungkus mesin gelandangan Anda

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

  3. salin kotak ke remote Anda

  4. init kotak di mesin jarak jauh Anda dengan menjalankan

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

  5. Lari vagrant up

Stefan Diabo
sumber
1
Jika nama mesin Anda adalah panjang dan Anda terlalu malas untuk melihat VirtualBox GUI dan ketik nama atau id - Anda bisa daftar semua nama VM Anda dan id dengan perintah terminal ini: VBoxManage list vms. Setelah Anda bisa menyalin dan melakukan apa yang diperintahkan di @Phil langkah ke-2 dan ke-4. :) Yey.
Sid
@Sid mengapa tidak hanya daftar kotak $ gelandangan
Ken Ratanachai S.
@KenRatanachaiS karena perintah Anda mencantumkan kotak, misalnya: ( scotch/box (virtualbox, 3.0)). Perintah saya - mesin virtual dengan pengenal, misalnya:"Win10 - SandBox" {bc251c06-501f-4c0f-bgfa-21f2815ba2cd}
Sid
2

Tak satu pun dari jawaban di atas berhasil untuk saya. Saya telah 2 hari mencari cara untuk memigrasi Mesin Vagrant + VirtualBox dari komputer ke komputer lain ... Itu mungkin!

Pertama, Anda perlu memahami bahwa mesin virtual dipisahkan dari folder sinkronisasi / bersama Anda. Jadi, ketika Anda mengemas mesin Anda, Anda mengemasnya tanpa file Anda, tetapi dengan database.

Apa yang kamu butuhkan:

1- Buka CMD komputer Anda 1 mesin host (Baris perintah. Buka sebagai Adminitrator dengan tombol kanan -> "Jalankan sebagai administrator") dan buka file yang diinstal gelandangan Anda. Pada kasus saya: C: / VVV Anda akan melihat Vagrantfile Anda dan juga folder-folder ini:

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

Folder / www / adalah tempat saya menyimpan Folder Sinkronisasi dengan domain pengembangan saya. Anda mungkin memiliki folder sinkronisasi Anda di tempat lain, pastikan untuk memahami apa yang Anda lakukan. Juga / config dan / database adalah folder sinkronisasi.

2- jalankan perintah ini: vagrant package --vagrantfile Vagrantfile

(Perintah ini melakukan paket mesin virtual Anda menggunakan konfigurasi Vagrantfile Anda.)

Inilah yang dapat Anda baca di dokumentasi Vagrant tentang perintah:

Kesalahpahaman yang umum adalah bahwa opsi --vagrantfile akan mengemas Vagrantfile yang digunakan saat vagrant init digunakan dengan kotak ini. Ini bukan kasusnya. Sebaliknya, Vagrantfile dimuat dan dibaca sebagai bagian dari proses pemuatan Vagrant saat kotak digunakan. Untuk informasi lebih lanjut, baca tentang urutan pemuatan Vagrantfile.

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

Setelah selesai, Anda akan memiliki file package.box.

3- Salin semua file ini (/ config, / database, Vagrantfile, package.box, dll.) Dan tempelkan di Komputer 2 Anda tepat di mana Anda ingin menginstal mesin virtual Anda (pada kasus saya D: / VVV).

Sekarang Anda memiliki salinan semua yang Anda butuhkan di komputer 2 host Anda.

4- jalankan ini: vagrant box add package.box --name VVV

(--Name digunakan untuk menamai mesin virtual Anda. Dalam kasus saya, ini bernama VVV) (Anda dapat menggunakan --force jika Anda sudah memiliki mesin virtual dengan nama ini dan ingin menimpanya. (Gunakan dengan hati-hati!))

Ini akan membongkar mesin Virtual gelandangan baru Anda.

5- Setelah selesai, jalankan: vagrant up

Mesin akan menginstal dan Anda akan melihatnya di "manajer kotak mesin virtual Oracle". Jika Anda tidak dapat melihat mesin virtual, coba jalankan kotak Oracle VM sebagai administrator (klik kanan -> Jalankan sebagai administrator)

Anda sekarang mungkin memiliki semuanya baik-baik saja tetapi ingat untuk melihat apakah host Anda seperti yang Anda harapkan:

c:/windows/system32/hosts

6- Mungkin ide yang bagus untuk menyalin file host Anda dari Komputer 1 ke Komputer 2. Atau salin baris yang Anda butuhkan. Dalam kasus saya, ini adalah host yang saya butuhkan:

192.168.50.4 test.dev
192.168.50.4 vvv.dev
...

Di mana 192.168.50.4 adalah IP mesin Virtual saya dan test.dev serta vvv.dev sedang mengembangkan host.

Saya harap ini dapat membantu Anda :) Saya akan senang jika Anda memberikan umpan balik kepada Anda.

Beberapa kekhususan kasus saya yang mungkin Anda temukan:

Ketika saya lari gelandangan, ada masalah dengan mysql, itu tidak berfungsi. Saya harus menjalankan di server Virtual (klik kanan pada mesin virtual oracle -> Tampilkan konsol):apt-get install mysql-server

Setelah ini, saya lari lagi gelandangan dan semuanya berfungsi tetapi tanpa data di database. Jadi saya melakukan mysqldump all-tables dari Komputer 1 dan mengunggahnya ke Komputer 2.

CATATAN LAINNYA: Mesin virtual saya tidak persis di Komputer 1 dan Komputer 2. Sebagai contoh, beberapa waktu lalu saya membuat konfigurasi internal untuk menggunakan NFS (untuk mempercepat folder sinkronisasi server) dan saya perlu menjalankan lagi perintah ini di Komputer 2 tuan rumah:vagrant plugin install vagrant-winnfsd

gtamborero
sumber
1

Seperti yang dinyatakan dalam

Bagaimana cara mengubah tempat Vagrant mencari hard drive virtualnya?

keadaan mesin virtual disimpan dalam folder VirtualBox yang telah ditentukan sebelumnya. Menyalin mesin yang sesuai (folder) selain vagrant-project Anda ke host lain akan mempertahankan status mesin virtual Anda.

Manuel
sumber
0

Pada 2019 ada subperintah: vagrant box repackage

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

Anda dapat menemukan name providerdan versiondengan menjalankanvagrant box list

vagrant box list
macinbox (virtualbox, 10.14.5)

Ouput vagrant box repackageadalah file bernama package.boxyang pada dasarnya adalah file tgz yang isinya dapat dicantumkan seperti di bawah ini:

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