본문 바로가기

소프트웨어 & 잡다

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계정 등으로 접속해야 한다. 이 과정을 수행하는 과정은 생략한다.