Bir Vagrant sanal makinesini aktarmak için nasıl dışa aktarılır


108

Bir serseri kutum var ve çalışıyor (bir LAMP yığını ile yapılandırılmış). Onu başka bir bilgisayara aktarmam gerekiyor. Nasıl ihraç edebilirim? Sanırım başka bir bilgisayara kopyalanabilen bir dosya (veya dosyalar) alabilirim, böylece serseri kutusunu içe aktarmak için bazı komutlar çalıştırabilirim.


1
Serseri kutuların transferini otomatikleştirmek için bazı senaryolar yazdım. Bkz soniah / transfer_vagrant_boxes
Sonia Hamilton '

//, Sonia'nın senaryolarını deneyen oldu mu?
Nathan Basanese

@NathanBasanese AFAIU, bu komut dosyaları, serseri kutu yeniden paketlemesini kullandıkları için, sonuçta ortaya çıkan çalışan sanal makinelerin değil temel kutuların aktarılmasına yardımcı olur (belgelerine bakın)
Olivier Berger

Yanıtlar:


120

Bunu yapmanın iki yolu var, ben buna kirli ve temiz yol diyeceğim :

1. Kirli yol

Şu vagrant packagekomutu kullanarak mevcut sanal ortamınızdan bir kutu oluşturun :

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

Ardından kutuyu diğer bilgisayara kopyalayın, kullanarak ekleyin vagrant box addve vagrant upher zamanki gibi çalıştırın .

VagrantfileSanal makine önyüklendiğinde çalışma dizininizdeki (ile birlikte olan ) dosyaların paylaşıldığını, bu nedenle onu diğer bilgisayara da kopyalamanız gerektiğini unutmayın.

2. Temiz yol

Teorik olarak Vagrant ile ihracat / ithalat yapmak asla gerekli olmamalıdır. Sanal ortamı (şef, kukla, yanıtlayıcı) yapılandırmak için provizyonu ve çalışma dizininiz için git gibi bir sürüm kontrol sistemini kullanma öngörüsüne sahipseniz, bir ortamı kopyalamak bu noktada çalıştırmak kadar basit olacaktır:

git clone <your_repo>
vagrant up

5
O kadar temiz , ileri görüşlü bir yönetici olmaya çalışmak ... Git deponuza bir işletim sistemi kurulum iso koymanıza gerek yok, değil mi? Örneğin bunu mu öneriyorsun? Ansible kullanarak, deponuz Vagrantfile ve yanıtlanabilir bir oyun kitabını içerecektir. Vagrantfile, 1. vagrantcloud'dan bir temel kutu indirir. 2. Diğer dosyalar / depolar / bulut-depolamayı kullanarak temel kutuyu sağlamak / yapılandırmak için yanıtlanabilir başucu kitabını çalıştırın. Sağ? Yoksa git deposunda başka bir şey mi var?
ocaklar

8
"Temiz yol", vm içinde olabilecek veritabanları (mySQL, Wordpress) için hesaba katılıyor mu? Bu, diğer bilgisayara nasıl senkronize edilebilir?
kevllar

1
@kevllar Temiz yol, git deposunun dışında yeni bir geliştirme ortamı başlatmak için gerekli hiçbir bilgi olmadığı anlamına gelir. Bu, yeni serseri kutusunun sağlanması sırasında (Chef / Puppet / what-have-you aracılığıyla) veritabanının kurulması ve yapılandırılmasının tamamlanacağı anlamına gelir.
Hovis Biddle

2
Öyleyse Hashicorp tarafından önerilen yol da 'kirli' mi? yani kutuyu paketleyip atlas sunucusuna yüklensin mi? 'Temiz' yolun, serserinin tüm amacının olduğunu düşündüğüm tam ortamı kopyalayıp
yansıtmayacağından emin değilim

1
Resmi yolun nasıl kirli kabul edildiğini anlamıyorum. Herhangi bir iyi ruh nedenini açıklayabilir mi?
thclpr

28

Mac'imdeki sabit sürücüm bir projenin ortasında bip sesi çıkarıyordu, bu yüzden bir SSD takmaya karar verdim. Projemi bir diskten diğerine taşımam gerekiyordu. Dikkate alınması gereken birkaç nokta:

  • Mac'te sanal kutu ile serseriyim
  • Git kullanıyorum

Bu benim için çalıştı:

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`

VB Guest eklemeleriyle ilgili birkaç sorun yaşadım.

görüntü açıklamasını buraya girin

Onları bu çözümle düzelttim .


//, bunu deneyeceğim @KJPrince. Bizim için kırdığın için teşekkürler.
Nathan Basanese

//, denedim, ancak VirtualBoxVMs dizinimi ~ / VirtualBox \ VMs üzerine kopyaladığımda ve şunu çalıştırdığımda aşağıdaki bağlantıda hataları aldım vagrant box list: 0bin.net/paste/iCiaqNhU-i3bbfY2#-KDiXYcRFni1RNgNJhOBrIs/…
Nathan Basanese

18

Bu aslında oldukça basit

  1. Uzak makineye sanal kutu ve serseri yükleyin
  2. Serseri makinenizi sarın

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

  3. kutuyu uzaktan kumandana kopyala

  4. çalıştırarak uzak makinenizdeki kutuyu başlatın

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

  5. Çalıştırmak vagrant up


1
Makinenizin adı uzunsa ve Virtualbox GUI bakıp 's adı veya id yazmak için tembel ise - bu uç komutla tüm SM'nin isimleri ve id en listeleyebilirsiniz: VBoxManage list vms. Ardından @ Phil 2. ve 4. adımlarda anlatılanları kopyalayıp yapabilirsiniz. :) Evet.
Sid

@Sid why not just $ vagrant box list
Ken Ratanachai S.Ocak

@KenRatanachaiS çünkü komutunuz kutuları listeliyor, örneğin: ( scotch/box (virtualbox, 3.0)). Benim komutum - tanımlayıcıya sahip sanal makineler, örneğin:"Win10 - SandBox" {bc251c06-501f-4c0f-bgfa-21f2815ba2cd}
Sid


2

Yukarıdaki cevapların hiçbiri benim için işe yaramadı. Bir Vagrant + VirtualBox Makinesini bir bilgisayardan diğerine geçirmenin yolu üzerinde 2 gündür çalışıyorum ... Bu mümkün!

Öncelikle, sanal makinenin senkronizasyon / paylaşılan klasörünüzden ayrıldığını anlamanız gerekir. Yani makinenizi paketlediğinizde, onu dosyalarınız olmadan, ancak veritabanları ile paketliyorsunuz.

Ne yapmak gerekiyor:

1- Bilgisayarınızın 1 ana bilgisayarının CMD'sini açın (Komut satırı. Sağ düğmeyle Yönetici olarak açın -> "Yönetici olarak çalıştır") ve serseri yüklü dosyalarınıza gidin. Benim durumumda: C: / VVV Vagrantfile dosyanızı ve şu klasörleri de göreceksiniz:

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

/ Www / klasörü, geliştirme etki alanlarımla Senkronizasyon Klasörümün bulunduğu yerdir. Senkronizasyon klasörünüz başka bir yerde olabilir, sadece ne yaptığınızı anladığınızdan emin olun. Ayrıca / config ve / database eşitleme klasörleridir.

2- bu komutu çalıştırın: vagrant package --vagrantfile Vagrantfile

(Bu komut, Vagrantfile yapılandırmanızı kullanarak sanal makinenizin bir paketini oluşturur.)

Vagrant belgelerinde komutla ilgili okuyabilecekleriniz:

Yaygın bir yanılgı, --vagrantfile seçeneğinin bu kutu ile birlikte vagrant init kullanıldığında kullanılan bir Vagrantfile paketleyeceğidir. Olay bu değil. Bunun yerine, kutu kullanıldığında Vagrant dosyası yüklenir ve Vagrant yükleme işleminin bir parçası olarak okunur. Daha fazla bilgi için, Vagrantfile yükleme sırası hakkındaki bilgileri okuyun.

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

Bittiğinde, bir package.box dosyanız olacaktır.

3- Tüm bu dosyaları kopyalayın (/ config, / database, Vagrantfile, package.box, vb.) Kopyalayın ve Bilgisayarınızda 2 sanal makinenizi kurmak istediğiniz yere yapıştırın (benim durumumda D: / VVV).

Artık bilgisayarınızda 2 ana bilgisayarda ihtiyacınız olan her şeyin bir kopyasına sahipsiniz.

4- şunu çalıştırın: vagrant box add package.box --name VVV

(--Name sanal makinenizi adlandırmak için kullanılır. Benim durumumda adı VVV'dir) (Bu ada sahip bir sanal makineniz varsa ve üzerine yazmak istiyorsanız --force kullanabilirsiniz. (Dikkatli kullanın!))

Bu, yeni serseri Sanal makinenizin paketini açacaktır.

5- Bitirince koşun: vagrant up

Makine kurulacak ve onu "Oracle sanal makine kutu yöneticisi" üzerinde görmelisiniz. Sanal makineyi göremiyorsanız, Oracle VM kutusunu yönetici olarak çalıştırmayı deneyin (sağ tıklama -> Yönetici olarak çalıştır)

Artık her şeye sahip olabilirsiniz, ancak ev sahiplerinizin beklediğiniz gibi olup olmadığını kontrol etmeyi unutmayın:

c:/windows/system32/hosts

6- Belki de ana dosyanızı Bilgisayarınızdan 1 Bilgisayarınıza kopyalamak iyi bir fikirdir . Veya ihtiyacınız olan satırları kopyalayın. Benim durumumda, ihtiyacım olan ana bilgisayarlar:

192.168.50.4 test.dev
192.168.50.4 vvv.dev
...

192.168.50.4, Sanal makinemin IP'sidir ve test.dev ve vvv.dev ana bilgisayarları geliştirmektedir.

Umarım bu size yardımcı olabilir :) Gidişinizi geri bildirirseniz sevinirim.

Vakamın bulabileceğiniz bazı özellikleri:

Serseri koştuğumda, mysql ile ilgili bir sorun vardı, çalışmıyordu. Sanal sunucuda çalıştırmam gerekiyordu (oracle sanal makineye sağ tıklayın -> Konsolu göster):apt-get install mysql-server

Bundan sonra tekrar serseri koştum ve her şey çalışıyordu, ancak veritabanları hakkında veri yoktu. Bu yüzden Bilgisayar 1'den tüm tabloları mysqldump yaptım ve bunları Bilgisayar 2'ye yükledim.

DİĞER NOTLAR: Sanal makinem tam olarak Bilgisayar 1 ve Bilgisayar 2'de değil. Örneğin, bir süre önce NFS kullanmak için (sunucu senkronizasyon klasörlerini hızlandırmak için) dahili yapılandırmayı yaptım ve bu komutu Bilgisayar 2'de tekrar çalıştırmam gerekiyordu. ana bilgisayar:vagrant plugin install vagrant-winnfsd



0

2019 itibariyle bir alt komut var: vagrant box repackage

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

Bulabilirsin name providerve versionkoşarakvagrant box list

vagrant box list
macinbox (virtualbox, 10.14.5)

Ait çıkışına vagrant box repackageadlı bir dosya package.boxiçeriği aşağıdaki gibi sıralanabilir bir tgz dosyası temelde:

tar tzf package.box
./metadata.json
./box.ovf
./Vagrantfile
./box-disk001.vmdk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.