필자의 환경은 Windows 7 Professional K Service Pack 1 64bit이며 vagrant ssh 접속은 cygwin을 통해 하고 있었다. 이 연결고리를 찾게된 계기는 VirtualBox를 버전 업그레이드를 하면서 부터 시작됐다.

VirtualBox 업글 후 VirtualBox를 실행했더니 오류 메시지와 함께 실행이 되질 않아 리붓 그리고 재부팅 후 cygwin을 통해 ssh 접속 후 특정 vm을 띄우는 vagrant up명령을 실행하고 VirtualBox를 실행했더니 기존 VM들이 싹 사라진것

원인은 기본 머신 폴더가 변경되었던 것

기존 : C:\Users\user\VirtualBox VMs 변경 : D:\dev\etc\cygwin64\home\user\VirtualBox VMs

문제해결을 위해 vm을 띄웠던 것은 vagrant destroy 명령으로 제거하고 기본 머신 폴더를 다시 기존 경로로 되돌렸다. 하지만 이것만으로는 기존 VM을 띄울 수 없었다. 왜냐하면 vagrant 디렉토리는 아래와 같이 구성되어 있는데 vagrant destroy 명령을 수행하는 과정에서 .vagrant 디렉토리 내에 파일들이 모두 제거되었기 때문

.vagrant
└── machines
    └── default
        └── virtualbox
            ├── action_provision
            ├── action_set_name
            └── id

그래서 이 문제를 해결하기 위해 “vagrant와 virtualbox의 연결고리”가 어떤식으로 연결되는지 알아봤고 그 해결방법을 정리해두는 것 혹시나 또 나중에 볼일이 생기지 싶은 마음에..

<?xml version="1.0"?>
<!--
** DO NOT EDIT THIS FILE.
** If you make changes to this file while any VirtualBox related application
** is running, your changes will be overwritten later, without taking effect.
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
-->
<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.12-windows">
  <Machine uuid="{47bc0ceb-ff9a-49cd-8490-719f8af77a4e}" name="server-packaging-test-64-20140305_default_1394000976963_89325" OSType="Ubuntu_64" currentSnapshot="{14b56618-6a0b-4da1-9977-db370a8cc3e3}" snapshotFolder="Snapshots" lastStateChange="2014-03-13T01:36:52Z">
    <MediaRegistry>
    </MediaRegistry>
  </Machine>
</VirtualBox>

해결과정

  1. 기존 VM 중 .vagrant 디렉토리가 정상인 VM을 골라 id, action_set_name, action_provision 내용 확인
    • 이 과정에서 action_set_name과 action_provision 파일의 내용은 동일했음
    • id : 47bc0ceb-ff9a-49cd-8490-719f8af77a4e
    • action_set_name : 1394000976963_89325
    • action_provision : 1394000976963_89325
  2. VirtualBox 기존 머신 폴더에서 위에서 확인한 내용을 검색. 검색결과 확장자 vbox 파일에서 매칭되는 결과 확인
  3. 복구할 대상의 Vagrant 디렉토리에 .vagrant meta 파일 생성
  4. 복구할 대상의 Vagrant 디렉토리에서 vagrant up 명령으로 vm 실행

결론

  • vagrant와 virtualbox의 연결고리는 아래와 같다.
    • VirtualBox : 확장자 vbox 파일
    • Vagrant : .vagrant meta 파일