流浪者“未创建虚拟机。”尝试从现有 VM 创建框时

Posted

技术标签:

【中文标题】流浪者“未创建虚拟机。”尝试从现有 VM 创建框时【英文标题】:Vagrant " VM not created." when trying to create box from existing VM 【发布时间】:2013-07-25 02:24:03 【问题描述】:

我导入了precision32 box,然后在VM 上安装了一些包和其他数据。我的计划是然后将其重新打包到一个盒子中,以在共享时节省复杂的配置。

但是。

vagrant package --base dev-vm --output /box/vm.box

总是返回

[dev-vm] VM not created . Moving on

我的目录结构是:

-dev-vm
    --.vagrant
    --Logs
    --box.ovf
    --box-disk1.vmdk
    --dev-vm_13345342.vbpx
    --metadata.json
    --Vagrantfile

 set VAGRANT_LOG=debug

其中没有显示关于正在发生的事情的额外信息。

使用 Cygwin 的 Windows 7

更新:

 export VAGRANT_LOG=debug

供 Cygwin 设置调试日志。

然后我得到

 DEBUG subprocess: Waiting for process to exit. Remaining to timeout: 32000
 DEBUG subprocess: Exit status: 0
 INFO warden: Calling action: #<Vagrant::Action::Builtin::Call:0x2abb800>
 INFO runner: Running action: #<Vagrant::Action::Builder:0x2695920>
 INFO warden: Calling action: #<VagrantPlugins::ProviderVirtualBox::Action::Created:0x267c078>
 INFO runner: Running action: #<Vagrant::Action::Warden:0x2ac6c48>
 INFO warden: Calling action: #<VagrantPlugins::ProviderVirtualBox::Action::MessageNotCreated:0x2ac6c00>
 INFO interface: info: VM not created. Moving on...

【问题讨论】:

当我打包一个 VirtualBox 配置的盒子时,我必须使用带有时间码的特定盒子名称,例如lucid_1372711888 @bfitzpatrick 。就是这样。所以: vagrant package --base dev-vm_13743534 --output /box/vm.box 工作。您想将此添加为答案以便我接受吗? 【参考方案1】:

如果您在包含 Vagrantfile 的文件夹中,您也可以简单地运行:

vagrant package --output your-box-name.box

下图显示了使用此命令创建的 .box 文件的内容:

【讨论】:

如果您这样做,则创建的 .box 仅包含 .vmdk 文件——它缺少所有配置内容(如果您使用 --vagrantfile 选项打包,则缺少.ovf 和 Vagrantfile)。跨度> @foobarbecue - 我过去曾使用过该命令,它打包了所有内容。我在答案中添加了未打包 .box 的屏幕截图。 我觉得这应该是正确的答案,因为备用 - 使用“vboxmanage list vms”需要用户知道列表匹配中产生的名称。此方法将根据 Vagrant 文件所在的路径隐式生成输出。【参考方案2】:

当您打包一个盒子时,盒子名称必须是您可以从 VirtualBox 获得的特定机器名称(例如lucid_1372711888)。只需在 cmd 中执行以下命令:

vboxmanage list vms

请注意,“vboxmanage”应事先添加到 PATH 变量中。请参阅here 如何做到这一点。

还要注意虚拟机名称不能包含空格。否则它不会被“vagrant package”命令识别。例如:

vagrant package --base win7_vbox_base --output win7_base.box #CORRECT
------------------------------------------------------------------------
vagrant package --base win7 vbox base --output win7_base.box #INCORRECT

【讨论】:

您可以通过:$ VBoxManage list vms 找到盒子名称。另请注意,这在 Vagrant 1.4.2 中被破坏:groups.google.com/forum/#!msg/vagrant-up/HNXKTBv0-Jw/… 请记住,对于 Windows 程序(由于我认为它起源于 Linux)来说,它不寻常地区分大小写,因此如果大小写不完全匹配,您可能会收到错误,即:lucid_1372711888 != @ 987654328@ 注意盒子名称区分大小写 @79E09796 评论很重要。 "ubuntu" != "Ubuntu" 如果这是你的盒子名称。我刚遇到这个问题。 :) 如果你双引号你的 boxname vagrant package --base "Ubuntu 14.04.3" 也可以使用空格 请注意,如果您的虚拟机名称包含空格,您可以使用“vboxmanage list vms”命令打印的 UUID 而不是文本虚拟机名称。这避免了重命名机器实例的需要!

以上是关于流浪者“未创建虚拟机。”尝试从现有 VM 创建框时的主要内容,如果未能解决你的问题,请参考以下文章

如何更改现有流浪盒的配置?

流浪者可以使用多少硬盘空间?

流浪者没有启动。创建 VM 的用户与当前用户不匹配

流浪者无法正常工作

Azure Rest API 附加现有托管磁盘

ZF2应用程序的Puphpet流浪汉