不知怎的,我的流浪项目已解除关联本身从它的VirtualBox虚拟机,这样,当我vagrant up
无业游民将导入的基础,然后创建一个新的虚拟机。
有没有一种方法,以与现有的虚拟机的流浪项目重新关联? 如何流浪内部一个Vagrantfile与VM VirtualBox虚拟目录相关联?
不知怎的,我的流浪项目已解除关联本身从它的VirtualBox虚拟机,这样,当我vagrant up
无业游民将导入的基础,然后创建一个新的虚拟机。
有没有一种方法,以与现有的虚拟机的流浪项目重新关联? 如何流浪内部一个Vagrantfile与VM VirtualBox虚拟目录相关联?
警告:下面的流浪1.0.x的作品中的解决方案,但不放浪1.1+。
流浪使用“.vagrant”文件在同一目录作为你的‘Vagrantfile’来追踪你的虚拟机的UUID。 如果虚拟机不存在此文件将不会存在。 该文件的格式是JSON。 它看起来像这样,如果一个虚拟机存在:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
是默认的虚拟机的名称(如果你不使用多VM设置)。
如果你的虚拟机已经俨然成为关联,你所能做的就是做VBoxManage list vms
将列出所有VM VirtualBox的是知道它的名字和UUID。 然后手动创建一个.vagrant
在相同的目录中的文件Vagrantfile
和内容正确填写。
运行vagrant status
,以确保流浪拿起适当的改变。
注意:这不是正式流浪汉,流浪汉的支持可能会改变的格式.vagrant
在任何时间。 但是,这是流浪0.9.7的有效,有效期为流浪1.0。
对于流浪1.6.3做到以下几点:
1)在你的Vagrantfile所在的目录,运行命令
VBoxManage list vms
你会是这样的:
"virtualMachine" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
2)转到以下路径:
cd .vagrant/machines/default/virtualbox
3)你的虚拟机XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX的ID创建一个名为ID文件
4)保存文件并运行了流浪汉
与上版本的解决方案是完全一样的。
但首先,你需要启动手工.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.5:{id}
替换{id}
在步骤1中找到的ID。
设置一个新的公共/私有密钥:
流浪使用存储在私有密钥.vagrant/machines/default/virtualbox/private_key
ssh到机器。 你需要生成一个新的。
ssh-keygen -t rsa
它命名为private_key
。
vagrant ssh
然后将复制private_key.pub
到/home/vagrant/.ssh/authorized_keys
。
用同样的问题今天流浪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
对于多虚拟机的设置,它应该是这样的:
{
"active":{
"web":"a1fc9ae4-5d43-49cb-be31-ab3c4f74745d",
"db":"13503bc5-76b8-4c26-95c4-32435b372212"
}
}
你可以得到虚拟机名称从Vagrantfile用于创建这些虚拟机。 寻找这一行:
config.vm.define :web do |web_config|
“网络”在这种情况下,虚拟机的名称。
我在OSX埃尔卡皮坦使用放浪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
在流浪1.9.1:
我有一个VM在一个名为“Ubuntu的16.04.1”虚拟盒,所以我包装它作为一个流浪汉框:
vagrant package --base "Ubuntu 16.04.1"
做为回应...
==> Ubuntu 16.04.1: Exporting VM...
==> Ubuntu 16.04.1: Compressing package to: blah blah/package.box
这是从修改@ Petecoop的答案 。
运行vagrant halt
,如果您还没有关闭箱呢。
然后列出您的virtualboxes: VBoxManage list vms
它会列出所有你virtualboxes的。 标识要恢复到框,抓住大括号中的ID: {}
然后编辑该项目的ID文件: sudo nano /.vagrant/machines/default/virtualbox/id
与您的VBS列表复制ID替换它。
尝试vagrant reload
。
如果不工作,并得到挂在SSH授权 (在这里我迷迷糊糊),复制从不安全的公共密钥颠沛流离的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!
您应该所有设置。
我在MacOS,发现箱子上取下.locks解决我的问题。
由于某些原因
vagrant halt
没有删除这些锁,并且使用时间机器在.vagrant /机/默认/ VirtualBox的恢复我的所有设置,去掉锁后,正确的机器启动了。
只有1名未成年人问题依然存在,它启动到GRUB,所以我不得不按回车一次,如果这是住不知道,但我会发现很快。
我运行游民1.7.4和5.0.2的VirtualBox