본문 바로가기

프로그래밍

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

안녕하세요 asbear입니다. ^^ 10년간 변함없이 곰같은 블로그에 방문해 주셔서 늘 감사합니다!
[해외취업 첫걸음, 꿈이 현실로!]로 오셔서 그룹에 조인 하시면 저와 소통 하실 수 있습니다.
또한 제가 지난달부터 해외취업 전문 블로그 포쉬포우 in 런던(https://poshpaws.tistory.com) 을 함께 운영하고 있습니다. 개발자와 디자이너의 영국취업 스토리와 좀더 전문적인 칼럼 글도 연재 하고 있으며 진로상담과 전문 컨설팅도 제공합니다. 해외 취업에 관심이 있는 분들의 방문을 기다립니다!

현재 개발환경 구성을 위해 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계정 등으로 접속해야 한다. 이 과정을 수행하는 과정은 생략한다.