vagrant와 virtualbox의 연결고리
필자의 환경은 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>
해결과정
- 기존 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
- VirtualBox 기존 머신 폴더에서 위에서 확인한 내용을 검색. 검색결과 확장자 vbox 파일에서 매칭되는 결과 확인
- 복구할 대상의 Vagrant 디렉토리에 .vagrant meta 파일 생성
- 복구할 대상의 Vagrant 디렉토리에서 vagrant up 명령으로 vm 실행
결론
- vagrant와 virtualbox의 연결고리는 아래와 같다.
- VirtualBox : 확장자 vbox 파일
- Vagrant : .vagrant meta 파일