多虚拟机 vagrantfile 在第二台机器上失败

多虚拟机 vagrantfile 在第二台机器上失败

我正在尝试使用 vagrantfile 管理一组虚拟机,虽然它成功配置了第一个虚拟机,但第二个虚拟机却失败了,并出现以下错误(用户名已删除):

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["import", "\\\\?\\C:\\Users\\{user}\\.vagrant.d\\boxes\\geerlingguy-VAGRANTSLASH-ubuntu1604\\1.2.5\\virtualbox\\box.ovf", "--vsys", "0", "--vmname", "packer-ubuntu-16.04-amd64_1551457217364_16812", "--vsys", "0", "--unit", "10", "--disk", "./packer-ubuntu-16.04-amd64-disk001.vmdk"]

Stderr: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interpreting \\?\C:\Users\{user}\.vagrant.d\boxes\geerlingguy-VAGRANTSLASH-ubuntu1604\1.2.5\virtualbox\box.ovf...
OK.
0%...
Progress state: E_INVALIDARG
VBoxManage.exe: error: Appliance import failed
VBoxManage.exe: error: Code E_INVALIDARG (0x80070057) - One or more arguments are invalid (extended info not available)
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleImportAppliance(struct HandlerArg *)" at line 957 of file VBoxManageAppliance.cpp

尝试从同一个基础框启动多个框是否存在问题?我在 Google 上搜索了一段时间,但没有找到任何与我相关的特定错误消息。

我的 vagrantfile 是:

Vagrant.configure("2") do |config|

  hosts = {
    "webserver" => "52201",
    "webserver-service" => "52202",
    "dbserver" => "52203",
    "lb" => "52204"
  }

  hosts.each do |hostname, port|
    config.vm.define hostname do |node|
      node.vm.box = "geerlingguy/ubuntu1604"
      node.vm.hostname = hostname
      node.vm.network "private_network", type: "dhcp"
      node.vm.network "forwarded_port", guest: 22, host: port, id: "ssh"
      node.vm.provider "virtualbox"
      node.vm.provision "shell", inline: "apt-get install -y acl"
    end
  end
end

我正在通过 WSL 使用 vagrant,但这在单虚拟机配置中不是问题,所以我不明白为什么这会是个问题。

答案1

这是通过使用

    node.vm.provider "virtualbox" do |vb|
        vb.name = hostname
        vb.linked_clone = true
    end

具体来说,我认为linked_clone配置是关键,尽管我说不出具体原因。

相关内容