Vagrant 가상 머신을 내 보내어 전송하는 방법


107

방랑자 상자가 실행 중입니다 (LAMP 스택으로 구성됨). 다른 PC로 전송해야합니다. 어떻게 내보낼 수 있습니까? 다른 PC에 복사 할 수있는 파일 (또는 파일)을 얻을 수 있으므로 거기에서 방랑 상자를 가져 오는 명령을 실행할 수 있습니다.


1
나는 방랑 상자의 전송을 자동화하기위한 스크립트를 작성했습니다. 참조 soniah / transfer_vagrant_boxes을
소니아 해밀턴에게

//, Sonia의 스크립트를 사용해 본 사람이 있습니까?
Nathan Basanese

@NathanBasanese AFAIU, 그 스크립트 도움 transfering베이스 상자가 아니라 그들이 방랑 상자 리 패키지의 활용으로 (그 문서를 참조), VM을 실행 결과
올리비에 버거

답변:


119

이 작업을 수행하는 두 가지 방법이 있습니다. 나는 그것을 더러운 방법깨끗한 방법 이라고 부를 것입니다 .

1. 더러운

다음 vagrant package명령을 사용하여 현재 가상 환경에서 상자를 만듭니다 .

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

그런 다음 상자를 다른 PC에 복사하고 사용하여 추가하고 평소대로 vagrant box add실행하십시오 vagrant up.

작업 디렉토리 (가있는 파일)의 파일 Vagrantfile은 가상 머신이 부팅 될 때 공유되므로 다른 PC에도 복사해야합니다.

2. 깨끗한 방법

이론적으로 Vagrant를 사용하여 내보내기 / 가져 오기를 수행 할 필요가 없어야합니다. 가상 환경 (chef, puppet, ansible) 및 작업 디렉토리에 대한 git과 같은 버전 제어 시스템을 구성하기 위해 프로비저닝을 사용할 수있는 예지력이 있다면 환경 복사는이 시점에서 실행하는 것처럼 간단합니다.

git clone <your_repo>
vagrant up

5
깨끗 하고 선견지명 한 관리자가 되려고 노력 중입니다 ... git repo에 OS 설치 iso를 넣을 필요가 없습니까? 예를 들어 당신은 그것을 제안하고 있습니까? ansible을 사용하면 repo에 Vagrantfile과 ansible 플레이 북이 포함됩니다. Vagrantfile은 1. vagrantcloud에서 베이스 박스를 다운로드합니다 . 2. ansible 플레이 북을 실행하여 다른 파일 / repos / cloud-storage를 사용하여베이스 박스를 프로비저닝 / 구성합니다. 권리? 아니면 git repo에 다른 것이 있습니까?
hobs

8
"깨끗한 방법"은 VM 내부에있을 수있는 데이터베이스 (mySQL, Wordpress)를 고려합니까? 다른 PC에 어떻게 동기화 할 수 있습니까?
kevllar

1
@kevllar 깨끗한 방법은 새로운 개발 환경을 시작하는 데 필요한 git 저장소 외부에 정보가 없음을 의미합니다. 이는 새로운 방랑자 상자를 프로비저닝하는 동안 (Chef / Puppet / what-have-you를 통해) 데이터베이스 설치 및 구성이 완료됨을 의미합니다.
Hovis Biddle

2
그래서 하시 코프가 추천하는 방법도 '더러운'가요? 즉 상자를 포장하고 아틀라스 서버에 업로드합니까? 사실 나는 방랑의 전체 목적이라고 생각 정확한 환경을 복제 할 '청소'방법은 .... 아니에요 확인하는 경우
sijpkes

1
나는 공식적인 방법이 어떻게 더러운 것으로 간주되는지 이해하지 못합니다. 좋은 영혼이 이유를 설명 할 수 있습니까?
thclpr

28

내 Mac의 하드 드라이브가 프로젝트 중간에 삐 소리를 내고있어서 SSD를 설치하기로 결정했습니다. 내 프로젝트를 한 디스크에서 다른 디스크로 이동해야했습니다. 고려해야 할 몇 가지 사항 :

  • 나는 Mac에서 가상 상자를 사용하여 방랑합니다.
  • 나는 자식을 사용하고있다

이것은 나를 위해 일한 것입니다.

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 추가에 몇 가지 문제가있었습니다.

여기에 이미지 설명 입력

나는 이 해결책으로 그들을 고쳤다 .


//, @KJPrince를 시도해 보겠습니다. 우리를 위해 분해 해 주셔서 감사합니다.
Nathan Basanese

//, 시도했지만 VirtualBoxVMs 디렉토리를 ~ / VirtualBox \ VMs로 복사하고 다음 링크에서 오류가 발생했습니다 vagrant box list. 0bin.net/paste/iCiaqNhU-i3bbfY2#-KDiXYcRFni1RNgNJhOBrIs/…
Nathan Basanese

18

이것은 실제로 매우 간단합니다

  1. 원격 컴퓨터에 가상 상자방랑자 설치
  2. 방랑자 기계 정리

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

  3. 상자를 리모컨에 복사

  4. 다음을 실행하여 원격 컴퓨터의 상자를 초기화하십시오.

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

  5. 운영 vagrant up


1
머신의 이름이 길고 Virtualbox GUI를보고 이름이나 ID를 입력하기에는 너무 게으르다면이 터미널 명령으로 모든 VM의 이름과 ID를 나열 할 수 있습니다 VBoxManage list vms. @Phil 2 단계와 4 단계에서 말한대로 복사하고 수행 할 수 있습니다. :) 예.
Sid

@Sid 왜 그냥 $ 방랑 상자 목록
Ken Ratanachai S.

명령이 상자를 나열하기 때문에 @KenRatanachaiS (예 : ( scotch/box (virtualbox, 3.0))). 내 명령-식별자가있는 가상 머신, 예 :"Win10 - SandBox" {bc251c06-501f-4c0f-bgfa-21f2815ba2cd}
Sid


2

위의 답변 중 어느 것도 나를 위해 일하지 않았습니다. 저는 2 일 동안 Vagrant + VirtualBox Machine을 컴퓨터에서 다른 컴퓨터로 마이그레이션하는 방법을 연구했습니다 ... 가능합니다!

먼저 가상 머신이 동기화 / 공유 폴더와 분리되어 있음을 이해해야합니다. 따라서 컴퓨터를 압축 할 때 파일없이 데이터베이스를 압축하는 것입니다.

해야 할 일 :

1- 컴퓨터 1 호스트 머신의 CMD를 열고 (명령 줄. 오른쪽 버튼을 사용하여 관리자로 열기-> "관리자 권한으로 실행") 방랑 설치 파일로 이동합니다. 제 경우 : C : / VVV Vagrantfile은 다음 폴더도 볼 수 있습니다.

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

/ www / 폴더는 개발 도메인과 동기화 폴더가있는 곳입니다. 동기화 폴더가 다른 위치에있을 수 있습니다. 수행중인 작업을 이해해야합니다. 또한 / config 및 / database는 동기화 폴더입니다.

2- 다음 명령을 실행하십시오. vagrant package --vagrantfile Vagrantfile

(이 명령은 Vagrantfile 구성을 사용하여 가상 머신의 패키지를 수행합니다.)

다음은 명령에 대한 Vagrant 문서에서 읽을 수있는 내용입니다.

일반적인 오해는 --vagrantfile 옵션이이 상자와 함께 vagrant init를 사용할 때 사용되는 Vagrantfile을 패키지화한다는 것입니다. 그렇지 않다. 대신 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

(--name은 가상 머신의 이름을 지정하는 데 사용됩니다. 제 경우에는 이름이 VVV입니다.) (이미이 이름을 가진 가상 머신이 있고 덮어 쓰려는 경우 --force를 사용할 수 있습니다. (주의 깊게 사용하세요!))

새로운 방랑 가상 머신의 압축이 풀립니다.

5- 완료되면 다음을 실행하십시오. vagrant up

머신이 설치되고 "Oracle 가상 머신 박스 관리자"에 표시되어야합니다. 가상 머신이 보이지 않으면 관리자 권한으로 Oracle VM 상자를 실행 해보십시오 (마우스 오른쪽 버튼 클릭-> 관리자 권한으로 실행).

이제 모든 것이 정상일 수 있지만 호스트가 예상 한대로인지 확인해야합니다.

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는 호스트를 개발하고 있습니다.

나는 이것이 당신을 도울 수 있기를 바랍니다. :) 당신의 의견을 보내 주시면 기쁩니다.

귀하가 찾을 수있는 제 경우의 몇 가지 특이 사항 :

vagrant를 실행했을 때 mysql에 문제가 있었는데 작동하지 않았습니다. 가상 서버에서 실행해야했습니다 (오라클 가상 머신-> 콘솔 표시를 마우스 오른쪽 버튼으로 클릭).apt-get install mysql-server

그 후, 나는 다시 방랑하고 모든 것이 작동했지만 데이터베이스에 데이터가 없습니다. 그래서 저는 컴퓨터 1에서 mysqldump 모든 테이블을 만들어 컴퓨터 2에 업로드했습니다.

기타 참고 사항 : 내 가상 머신이 컴퓨터 1과 컴퓨터 2에 정확히 있지는 않습니다. 예를 들어, 얼마 전에 NFS를 사용하도록 내부 구성을 만들었고 (서버 동기화 폴더의 속도를 높이기 위해) 컴퓨터 2에서이 명령을 다시 실행해야했습니다. 주최자:vagrant plugin install vagrant-winnfsd



0

2019 년에는 하위 명령이 있습니다. vagrant box repackage

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

당신은 찾을 수 name providerversion실행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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.