본문 바로가기

소프트웨어개발/개발잡담

Vagrant up 수행시 새로운 VM이 생성되는 문제

현재 개발환경 구성을 위해 Vagrant를 사용하는데 여러모로 편리하다. 그런데 가끔 vagrant up을 하면, 기존의 VM을 구동하는 대신, 새로운 VM을 빌드하는 경우가 있다. VagrantFile 의 내용이 바뀌는 경우 생길 수 있는 일인데, 정확한 원인은 잘 모르겠다.


암튼, 개발환경 세팅이 끝난 상황에서, 새로운 VM이 설치되어 버리니 몹시 짜증나는 상황이 아닐 수 없다. 긴 시간의 설치가 끝나고 vagrant ssh 를 해보면, 역시나 새로운 VM으로 연결된다. 하지만 기존의 VM이 사라진 것은 아니기 때문에, 다시 복구가 가능하다. (처음에는 이걸 몰라서, 당황한 나머지 그냥 모든걸 새로 설치 했었다.. -_-) VirtualBox를 실행 해 보면, 두개의 VM이 구동 되고 있는 것을 알 수가 있다.


기존의 VM으로 돌아가는 방법은 생각보다 간단하다.

1. 현재 설치된 VirtualBox VM 목록을 확인한다

$ VBoxManage list vms

"dev_env_default_1454361735276_9521" {febf70f0-2750-4c9b-8c6f-13efa1c2255f}

"dev_env_default_1463600058987_41324" {7e241e1e-cb17-4bc6-a9a6-59b2a3594efb}

두개의 VM이 설치 되어 있는 것을 확인 할 수 있다. 저 둘중 하나는 원래것이고 나머지 하나는 원하지 않게 설치된 것이다.


2. 현재 새로 매핑된 VirtualBox ID를 확인한다

매핑된 VirtualBox ID는 .vagrant/machines/default/virtualbox/id 파일에 적혀 있다. 이 패스는 VagrantFile이 있는 디렉토리 기준이다. 본인 포함 ~/.vagrant/machines/default/virtualbox/id 로 착각하는 사람들이 많다.

$ cat .vagrant/machines/default/virtualbox/id

7e241e1e-cb17-4bc6-a9a6-59b2a3594efb

확인 결과, 7e241e1e-cb17-4bc6-a9a6-59b2a3594efb으로 설정 되어 있다. 이것이 Vagrant가 실수(?)로 새로 설치한 VM의 ID이다. 따라서 이 값을 원래의 값 (여기서는 febf70f0-2750-4c9b-8c6f-13efa1c2255f) 으로 돌려놓도록 한다.


3. 접속 시도, 실패

이제 vagrant ssh를 시도하면, 느닷없이 비밀번호를 묻는다. 이는 ssh key가 새것으로 교체 되었기 때문이다. 새로운 키는 .vagrant/machines/default/virtualbox/private_key에 저장되어 있으며, 이 파일을 이용해서 public key를 생성하고, VM의 vagrant user의 authorized_keys 파일에 추가해 주면 된다. 이를 위해서는 최소 한번은 직접 VirtualBox의 GUI를 통해 접속하거나, VagrantFile을 수정하여 root계정 등으로 접속해야 한다. 이 과정을 수행하는 과정은 생략한다.