어쨌든 내 Vagrant 프로젝트는 VirtualBox VM과 연결이 끊어지기 때문에 vagrant up
Vagrant가 기본 상자를 가져 와서 새로운 가상 머신을 생성합니다.
Vagrant 프로젝트를 기존 VM과 다시 연결하는 방법이 있습니까? Vagrant는 Vagrantfile을 VirtualBox VM 디렉토리와 어떻게 내부적으로 연결합니까?
답변
경고 : 아래 솔루션은 Vagrant 1.0.x에서는 작동하지만 Vagrant 1.1+에서는 작동 하지 않습니다 .
Vagrant는 “Vagrantfile”과 동일한 디렉토리에있는 “.vagrant”파일을 사용하여 VM의 UUID를 추적합니다. VM이 없으면이 파일이 존재하지 않습니다. 파일 형식은 JSON입니다. 단일 VM이 존재하는 경우 다음과 같습니다.
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
기본 가상 머신의 이름입니다 (다중 VM 설정을 사용하지 않는 경우).
VM이 어떻게 든 연결이 끊어지면 VBoxManage list vms
VirtualBox가 이름과 UUID로 알고있는 모든 VM을 나열합니다. 그런 다음 .vagrant
사용자 Vagrantfile
와 동일한 디렉토리에 파일을 수동으로 작성 하고 내용을 올바르게 채우 십시오 .
vagrant status
Vagrant가 올바른 변경 사항을 선택했는지 확인 하십시오 .
참고 : 이것은 Vagrant가 공식적으로 지원하지 않으며 Vagrant는 .vagrant
언제든지 형식을 변경할 수 있습니다 . 그러나 이것은 Vagrant 0.9.7부터 유효하며 Vagrant 1.0에는 유효합니다.
답변
들어 방랑 1.6.3 다음을 수행 :
1) Vagrantfile이있는 디렉토리에서 다음 명령을 실행하십시오
VBoxManage list vms
당신은 이와 같은 것을 가질 것입니다 :
"virtualMachine" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
2) 다음 경로로 이동하십시오.
cd .vagrant/machines/default/virtualbox
3) VM의 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx의 ID로 id 라는 파일을 작성하십시오.
4) 파일을 저장하고 vagrant up을 실행하십시오.
답변
상위 버전의 솔루션은 매우 동일합니다.
그러나 먼저 .vbox 파일을 수동으로 시작하여 VBoxManage list vms
그런 다음 .vagrant/machines/default/virtualbox/id
uuid가 올바른지 확인하기 위해를 확인할 수 있습니다 .
답변
오늘 문제가 발생하면 내 .vagrant
폴더가 누락되어 단순히 ID를 설정하는 것보다 몇 가지 단계가 더 있음을 발견했습니다.
-
ID를 설정하십시오.
VBoxManage list vms
ID를 찾아에서 설정하십시오
{project-folder}/.vagrant/machines/default/virtualbox/id
.참고
default
하여 설정된 경우 다를 수 있습니다Vagrantfile
예를 들어config.vm.define "someothername"
. -
머신 프로비저닝을 중지하십시오.
파일
action_provision
과 동일한 디렉토리에 이름이 지정된 파일을 작성하고id
내용을 다음으로 설정하십시오 . 1 단계에서 찾은 id로1.5:{id}
바꾸십시오{id}
. -
새로운 공개 / 개인 키를 설정하십시오 :
Vagrant는 저장된 개인 키를 사용
.vagrant/machines/default/virtualbox/private_key
하여 컴퓨터에 ssh합니다. 새로운 것을 생성해야합니다.ssh-keygen -t rsa
이름을 지정하십시오
private_key
.vagrant ssh
다음 복사private_key.pub
로를/home/vagrant/.ssh/authorized_keys
.
답변
Vagrant 1.7.4로 오늘 같은 문제로 업데이트하십시오.
- https://github.com/mitchellh/vagrant/issues/1755의 유용한 스레드
이며 특히 다음 명령이 있습니다.
예를 들어, ‘vip-quickstart_default_1431365185830_12124’상자를 방랑자로 연결합니다.
$ VBoxManage list
"vip-quickstart_default_1431365185830_12124" {50feafd3-74cd-40b5-a170-3c976348de27}
$ echo -n "50feafd3-74cd-40b5-a170-3c976348de27" > .vagrant/machines/default/virtualbox/id
답변
다중 VM 설정의 경우 다음과 같습니다.
{
"active":{
"web":"a1fc9ae4-5d43-49cb-be31-ab3c4f74745d",
"db":"13503bc5-76b8-4c26-95c4-32435b372212"
}
}
해당 VM을 생성하는 데 사용 된 Vagrantfile에서 vm 이름을 가져올 수 있습니다. 이 줄을 찾으십시오.
config.vm.define :web do |web_config|
이 경우 “web”은 vm의 이름입니다.
답변
OSX El Capitan 에서 Vagrant 1.8.1 을 사용하고 있습니다.
컴퓨터를 다시 시작할 때 내 vm이 올바르게 종료되지 않았으므로 시도했을 때 vagrant up
항상 새로운 vm을 만들었습니다. 여기에는 해결책이 없습니다. 그러나 일한 것은 ingmmurillo의 답변의 변형이었습니다.
따라서 .vagrant/machines/default/virtualbox/id
실행에서 ID를 기반으로 만드는 대신 VBoxManage list vms
. 나는 ID를 업데이트해야했다..vagrant/machines/local/virtual_box/id
나는 본질적으로 나를 위해 이것을하는 하나의 라이너를 가지고있다 :
echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id
이것은 첫 번째 상자가 실행부터 시작해야한다고 가정합니다. VBoxManage list vms