ฉันมีกล่องพเนจรพร้อมใช้งาน (กำหนดค่าด้วย LAMP stack) ฉันต้องการโอนไปยังพีซีเครื่องอื่น ฉันจะส่งออกได้อย่างไร ฉันเดาว่าฉันจะได้รับไฟล์ (หรือไฟล์) ที่สามารถคัดลอกไปยังพีซีเครื่องอื่นได้ดังนั้นฉันจึงสามารถเรียกใช้คำสั่งเพื่อนำเข้ากล่องคนจรจัดได้
ฉันมีกล่องพเนจรพร้อมใช้งาน (กำหนดค่าด้วย LAMP stack) ฉันต้องการโอนไปยังพีซีเครื่องอื่น ฉันจะส่งออกได้อย่างไร ฉันเดาว่าฉันจะได้รับไฟล์ (หรือไฟล์) ที่สามารถคัดลอกไปยังพีซีเครื่องอื่นได้ดังนั้นฉันจึงสามารถเรียกใช้คำสั่งเพื่อนำเข้ากล่องคนจรจัดได้
คำตอบ:
คุณมีสองวิธีในการทำเช่นนี้ฉันจะเรียกว่าวิธีสกปรกและวิธีที่สะอาด :
1. วิธีสกปรก
สร้างกล่องจากสภาพแวดล้อมเสมือนปัจจุบันของคุณโดยใช้vagrant package
คำสั่ง:
http://docs.vagrantup.com/v2/cli/package.html
จากนั้นคัดลอกกล่องไปยังพีซีเครื่องอื่นเพิ่มโดยใช้vagrant box add
และเรียกใช้โดยใช้vagrant up
ตามปกติ
โปรดทราบว่าไฟล์ในไดเร็กทอรีการทำงานของคุณ (ไฟล์ที่มีVagrantfile
) จะถูกแชร์เมื่อเครื่องเสมือนบูทดังนั้นคุณต้องคัดลอกไปยังพีซีเครื่องอื่นด้วย
2. วิธีที่สะอาด
ในทางทฤษฎีไม่จำเป็นต้องทำการส่งออก / นำเข้ากับ Vagrant หากคุณมองการณ์ไกลในการใช้การจัดเตรียมสำหรับการกำหนดค่าสภาพแวดล้อมเสมือน (เชฟหุ่นแอนซิเบิล) และระบบควบคุมเวอร์ชันเช่นคอมไพล์สำหรับไดเร็กทอรีการทำงานของคุณการคัดลอกสภาพแวดล้อมจะทำได้ง่ายในจุดนี้เมื่อรัน:
git clone <your_repo>
vagrant up
ฮาร์ดไดรฟ์ใน Mac ของฉันส่งเสียงบี๊บระหว่างโปรเจ็กต์ฉันจึงตัดสินใจติดตั้ง SSD ฉันต้องการย้ายโครงการของฉันจากดิสก์หนึ่งไปยังอีกดิสก์หนึ่ง สิ่งที่ควรพิจารณา:
นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน:
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
ฉันแก้ไขด้วยวิธีนี้
vagrant box list
: 0bin.net/paste/iCiaqNhU-i3bbfY2#-KDiXYcRFni1RNgNJhOBrIs/…
นี่เป็นเรื่องง่ายจริงๆ
ห่อเครื่องจักรเร่ร่อนของคุณ
vagrant package --base [machine name as it shows in virtual box] --output /Users/myuser/Documents/Workspace/my.box
คัดลอกกล่องไปยังรีโมทของคุณ
เริ่มต้นกล่องบนเครื่องระยะไกลของคุณโดยเรียกใช้
vagrant init [machine name as it shows in virtual box] /Users/myuser/Documents/Workspace/my.box
วิ่ง vagrant up
VBoxManage list vms
ของคุณและรหัสที่มีคำสั่งสถานีนี้: หลังจากที่คุณสามารถคัดลอกและทำตามที่บอกไว้ใน @Phil ขั้นตอนที่ 2 และ 4 :) ใช่.
scotch/box (virtualbox, 3.0)
) คำสั่งของฉัน - เครื่องเสมือนที่มีตัวระบุเช่น"Win10 - SandBox" {bc251c06-501f-4c0f-bgfa-21f2815ba2cd}
วิธีที่ง่ายที่สุดคือบรรจุกล่อง Vagrant จากนั้นคัดลอก (เช่นscp
หรือrsync
) ไปยังพีซีเครื่องอื่นเพิ่มและvagrant up
;-)
สำหรับขั้นตอนโดยละเอียดโปรดดูที่=>
นี่มีวิธีใดบ้างในการโคลนกล่องพเนจรที่ติดตั้งไว้แล้ว
คำตอบข้างต้นไม่ได้ผลสำหรับฉัน ฉันใช้เวลา 2 วันในการหาวิธีโยกย้าย Vagrant + VirtualBox Machine จากคอมพิวเตอร์ไปยังเครื่องอื่น ... เป็นไปได้!
ขั้นแรกคุณต้องเข้าใจว่าเครื่องเสมือนถูกแยกออกจากโฟลเดอร์ซิงค์ / แชร์ของคุณ ดังนั้นเมื่อคุณบรรจุเครื่องคุณจะบรรจุโดยไม่มีไฟล์ แต่มีฐานข้อมูล
สิ่งที่คุณต้องทำ:
1- เปิด CMD ของเครื่องโฮสต์คอมพิวเตอร์ของคุณ 1 เครื่อง (บรรทัดคำสั่งเปิดในฐานะผู้ดูแลระบบด้วยปุ่มขวา -> "เรียกใช้ในฐานะผู้ดูแลระบบ") และไปที่ไฟล์ที่ติดตั้งคนจรจัดของคุณ ในกรณีของฉัน: C: / VVV คุณจะเห็น Vagrantfile ของคุณและโฟลเดอร์เหล่านี้ด้วย:
/config/
/database/
/log/
/provision/
/www/
Vagrantfile
...
โฟลเดอร์ / www / คือที่ที่ฉันมี Sync Folder กับโดเมนการพัฒนาของฉัน คุณอาจมีโฟลเดอร์ซิงค์ของคุณอยู่ที่อื่น แต่อย่าลืมเข้าใจว่าคุณกำลังทำอะไรอยู่ นอกจากนี้ / config และ / database เป็นโฟลเดอร์ที่ซิงค์
2- รันคำสั่งนี้: vagrant package --vagrantfile Vagrantfile
(คำสั่งนี้ทำแพ็คเกจของเครื่องเสมือนของคุณโดยใช้การกำหนดค่า Vagrantfile ของคุณ)
นี่คือสิ่งที่คุณสามารถอ่านได้ในเอกสาร Vagrant เกี่ยวกับคำสั่ง:
ความเข้าใจผิดทั่วไปคือตัวเลือก --vagrantfile จะเป็นแพ็กเกจ Vagrantfile ที่ใช้เมื่อใช้ vagrant init กับช่องนี้ กรณีนี้ไม่ได้. Vagrantfile จะถูกโหลดและอ่านเป็นส่วนหนึ่งของกระบวนการโหลด Vagrant เมื่อใช้กล่องแทน สำหรับข้อมูลเพิ่มเติมโปรดอ่านเกี่ยวกับลำดับการโหลด Vagrantfile
https://www.vagrantup.com/docs/cli/package.html
เมื่อเสร็จสิ้นคุณจะมีไฟล์ package.box
3- คัดลอกไฟล์เหล่านี้ทั้งหมด (/ config, / database, Vagrantfile, package.box ฯลฯ ) และวางลงในคอมพิวเตอร์ 2 ของคุณในตำแหน่งที่คุณต้องการติดตั้งเครื่องเสมือนของคุณ (ในกรณีของฉัน D: / VVV)
ตอนนี้คุณมีสำเนาของทุกสิ่งที่คุณต้องการบนโฮสต์คอมพิวเตอร์ 2 ของคุณแล้ว
4- เรียกใช้สิ่งนี้: vagrant box add package.box --name VVV
(ชื่อ - ใช้เพื่อตั้งชื่อเครื่องเสมือนของคุณในกรณีของฉันมันชื่อ VVV) (คุณสามารถใช้ - บังคับถ้าคุณมีเครื่องเสมือนที่มีชื่อนี้อยู่แล้วและต้องการเขียนทับ (ใช้อย่างระมัดระวัง!))
สิ่งนี้จะเปิดกล่องเครื่องเสมือนคนเร่ร่อนใหม่ของคุณ
5- เมื่อเสร็จสิ้นให้เรียกใช้:
vagrant up
เครื่องจะติดตั้งและคุณจะเห็นใน "Oracle virtual machine box manager" หากคุณไม่เห็นเครื่องเสมือนให้ลองเรียกใช้กล่อง Oracle VM ในฐานะผู้ดูแลระบบ (คลิกขวา -> Run as administrator)
ตอนนี้คุณอาจมีทุกอย่างเรียบร้อย แต่อย่าลืมดูว่าโฮสต์ของคุณเป็นไปตามที่คุณคาดไว้หรือไม่:
c:/windows/system32/hosts
6- อาจเป็นความคิดที่ดีที่จะคัดลอกไฟล์โฮสต์จากคอมพิวเตอร์ 1 ไปยังคอมพิวเตอร์ 2 หรือคัดลอกบรรทัดที่คุณต้องการ ในกรณีของฉันนี่คือโฮสต์ที่ฉันต้องการ:
192.168.50.4 test.dev
192.168.50.4 vvv.dev
...
โดยที่ 192.168.50.4 คือ IP ของเครื่องเสมือนของฉันและ test.dev และ vvv.dev กำลังพัฒนาโฮสต์
ฉันหวังว่านี่จะช่วยคุณได้ :) เรายินดีหากคุณแสดงความคิดเห็นเกี่ยวกับการเดินทางของคุณ
ลักษณะเฉพาะบางประการในกรณีของฉันที่คุณอาจพบ:
เมื่อฉันวิ่งพเนจรขึ้นมามีปัญหากับ mysql มันใช้งานไม่ได้ ฉันต้องรันบนเซิร์ฟเวอร์เสมือน (คลิกขวาที่ oracle virtual machine -> Show console):apt-get install mysql-server
หลังจากนั้นฉันก็วิ่งเร่ร่อนอีกครั้งและทุกอย่างก็ใช้งานได้ แต่ไม่มีข้อมูลในฐานข้อมูล ดังนั้นฉันจึงทำการ mysqldump all-tables จาก Computer 1 และอัปโหลดไปยัง Computer 2
หมายเหตุอื่น ๆ :
เครื่องเสมือนของฉันไม่ตรงกับคอมพิวเตอร์ 1 และคอมพิวเตอร์ 2 ตัวอย่างเช่นฉันได้ทำการกำหนดค่าภายในเมื่อไม่นานมานี้เพื่อใช้ NFS (เพื่อเร่งความเร็วโฟลเดอร์ซิงค์เซิร์ฟเวอร์) และฉันจำเป็นต้องเรียกใช้คำสั่งนี้อีกครั้งบนคอมพิวเตอร์ 2 เจ้าภาพ:vagrant plugin install vagrant-winnfsd
ตามที่ระบุไว้ใน
ฉันจะเปลี่ยนตำแหน่งที่ Vagrant มองหาฮาร์ดไดรฟ์เสมือนได้อย่างไร
สถานะเครื่องเสมือนจะถูกเก็บไว้ในโฟลเดอร์ VirtualBox ที่กำหนดไว้ล่วงหน้า การคัดลอกเครื่องที่เกี่ยวข้อง (โฟลเดอร์) นอกเหนือจากโครงการคนจรจัดไปยังโฮสต์อื่นของคุณควรรักษาสถานะเครื่องเสมือนของคุณ
ในปี 2019 มีคำสั่งย่อย: vagrant box repackage
vagrant box repackage --help
Usage: vagrant box repackage <name> <provider> <version>
-h, --help Print this help
คุณสามารถค้นหาname
provider
และversion
เรียกใช้vagrant box list
vagrant box list
macinbox (virtualbox, 10.14.5)
ouput ของvagrant box repackage
คือไฟล์ที่เรียกว่าpackage.box
ซึ่งโดยพื้นฐานแล้วเป็นไฟล์ tgz ซึ่งสามารถแสดงเนื้อหาได้ดังนี้:
tar tzf package.box
./metadata.json
./box.ovf
./Vagrantfile
./box-disk001.vmdk