jrd*_*cgr 130 virtualbox vagrant
不知怎的,我的Vagrant项目已经解除了与VirtualBox虚拟机的关联,所以当我vagrant up
Vagrant将导入基础框并创建一个新的虚拟机时.
有没有办法将Vagrant项目与现有VM重新关联?Vagrant如何在内部将Vagrantfile与VirtualBox VM目录相关联?
小智 200
对于Vagrant 1.6.3,请执行以下操作:
1)在Vagrantfile所在的目录中,运行命令
VBoxManage list vms
Run Code Online (Sandbox Code Playgroud)
你会有这样的事情:
"virtualMachine" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
Run Code Online (Sandbox Code Playgroud)
2)转到以下路径:
cd .vagrant/machines/default/virtualbox
Run Code Online (Sandbox Code Playgroud)
3)创建一个名为id的文件,其ID为VM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4)保存文件并运行vagrant
Mit*_*ell 89
警告:以下解决方案适用于Vagrant 1.0.x但不适用于 Vagrant 1.1+.
Vagrant使用与"Vagrantfile"相同的目录中的".vagrant"文件来跟踪VM的UUID.如果VM不存在,则此文件不存在.该文件的格式是JSON.如果存在单个VM,它看起来像这样:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
Run Code Online (Sandbox Code Playgroud)
default
是默认虚拟机的名称(如果您未使用多VM设置).
如果您的VM以某种方式变得不相关,那么您可以做的是VBoxManage list vms
列出VirtualBox通过其名称和UUID知道的每个VM.然后.vagrant
在与您相同的目录中手动创建文件Vagrantfile
并正确填写内容.
运行vagrant status
以确保Vagrant获得正确的更改.
注意:这不是Vagrant正式支持的,Vagrant可能随时更改格式.vagrant
.但这与Vagrant 0.9.7一样有效,并且对Vagrant 1.0有效.
Nat*_*tim 48
上层版本的解决方案完全相同.
但首先你需要手动启动.vbox文件,以便它出现 VBoxManage list vms
然后你可以检查.vagrant/machines/default/virtualbox/id
以检查uuid是否正确.
Pet*_*oop 13
如果今天有问题,我的.vagrant
文件夹丢失了,发现除了简单设置id之外还有一些步骤:
设置ID:
VBoxManage list vms
Run Code Online (Sandbox Code Playgroud)
找到id并设置{project-folder}/.vagrant/machines/default/virtualbox/id
.
请注意,default
如果在您的Vagrantfile
例如中设置可能会有所不同config.vm.define "someothername"
.
停止供应机器:
创建一个与文件action_provision
在同一目录中命名的id
文件,将其内容设置为:1.5:{id}
替换{id}
为步骤1中找到的id.
设置新的公钥/私钥:
Vagrant使用存储在其中的私钥.vagrant/machines/default/virtualbox/private_key
进入机器.你需要生成一个新的.
ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)
说出来private_key
.
vagrant ssh
然后复制private_key.pub
到/home/vagrant/.ssh/authorized_keys
.
今天用Vagrant 1.7.4更新了同样的问题:
例如,将'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
Run Code Online (Sandbox Code Playgroud)
对于多VM设置,它看起来像这样:
{
"active":{
"web":"a1fc9ae4-5d43-49cb-be31-ab3c4f74745d",
"db":"13503bc5-76b8-4c26-95c4-32435b372212"
}
}
Run Code Online (Sandbox Code Playgroud)
您可以从用于创建这些VM的Vagrantfile中获取vm名称.寻找这一行:
config.vm.define :web do |web_config|
Run Code Online (Sandbox Code Playgroud)
"web"是这种情况下vm的名称.
小智 6
这是根据@Petecoop 的回答修改的。
vagrant halt
如果您尚未关闭盒子,请运行。
然后列出您的虚拟盒:VBoxManage list vms
它将列出您的所有虚拟盒。确定要恢复到的框并获取大括号之间的 id:{}
。
然后编辑项目id文件:(sudo nano .vagrant/machines/default/virtualbox/id
来自项目目录)
将其替换为您从 VB 列表中复制的 ID。
尝试vagrant reload
。
如果这不起作用并且在 SSH 授权上挂起(我偶然发现的),请从vagrant git复制不安全的公钥。替换 的内容/.vagrant/machines/default/virtualbox/private_key
。当然备份原来的:cp private_key private_key-bak
。
然后跑vagrant reload
。它会说它已识别出不安全的密钥并创建一个新密钥。
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
Run Code Online (Sandbox Code Playgroud)
你应该已经准备好了。
我在OSX El Capitan上使用Vagrant 1.8.1
当我的计算机重新启动时,我的虚拟机没有正确关闭,所以当我尝试vagrant up
它时总是创建新的虚拟机.这里没有解决方案适合我.但是,工作是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
归档时间: |
|
查看次数: |
55203 次 |
最近记录: |