Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking Qemu中的VirtualBox设置等效于什么?_Networking_Qemu_Packer - Fatal编程技术网

Networking Qemu中的VirtualBox设置等效于什么?

Networking Qemu中的VirtualBox设置等效于什么?,networking,qemu,packer,Networking,Qemu,Packer,我正在尝试创建一个打包器模板,它同时具有一个VirtualBox和一个Qemu构建器。VirtualBox one运行良好,但使用Qemu,我很难弄清楚如何正确设置网络 更具体地说,在VirtualBox部分,我有 "vboxmanage": [ ... ["modifyvm", "{{.Name}}", "--nic2", "nat"], ["modifyvm", "{{.Name}}", "--cableconnected2", "on"], ["modi

我正在尝试创建一个打包器模板,它同时具有一个VirtualBox和一个Qemu构建器。VirtualBox one运行良好,但使用Qemu,我很难弄清楚如何正确设置网络

更具体地说,在VirtualBox部分,我有

  "vboxmanage": [
    ...
    ["modifyvm", "{{.Name}}", "--nic2", "nat"],
    ["modifyvm", "{{.Name}}", "--cableconnected2", "on"],
    ["modifyvm", "{{.Name}}", "--nic3", "null"],
    ["modifyvm", "{{.Name}}", "--cableconnected3", "off"]
  ],
  "vboxmanage_post": [
    ["modifyvm", "{{.Name}}", "--nic1", "hostonly"],
    ["modifyvm", "{{.Name}}", "--hostonlyadapter1", "VirtualBox Host-Only Ethernet Adapter"],
    ["modifyvm", "{{.Name}}", "--cableconnected1", "on"]
  ],
我试图在开始时至少配置第二个NIC

  "qemuargs": [
    [ "-netdev", "user,id=mynet0,net=192.168.56.101/24,host=192.168.56.2,dns=192.168.56.2,dhcpstart=192.168.56.2"],
    ["-m", "128M"]
  ]

但是Packer说,使用该命令调用Qemu时出错。我做错了什么?还有,当我以后运行创建的映像时,如何创建一个只支持主机的适配器?

好的,我设法解决了最初的问题

问题是,-netdev和-device都是必需的,而且(真正让我绊倒的是)它们的顺序很重要:“-netdev”第一,“-device”第二

此外,Packer似乎覆盖了它自己的第一个接口,这反过来又需要它的显式重新定义。明确的重新定义需要两个主机端口。我猜Packer使用其中一个作为其源端口。因此:

  "ssh_host_port_min": 3213,
  "ssh_host_port_max": 3214,
  "qemuargs": [
    ["-netdev", "user,id=user.0,hostfwd=tcp::3213-:22,hostfwd=tcp::3214-:22,net=10.0.2.0/24"],
    ["-device", "virtio-net,netdev=user.0"],
    ["-netdev", "user,id=user.1"],
    ["-device", "virtio-net,netdev=user.1"],
    ["-netdev", "user,id=user.2"],
    ["-device", "virtio-net,netdev=user.2"],
    ["-m", "128M"]
  ],
这与上面的VirtualBox设置不同,但至少足以让Packer成功创建映像。实际上,之后正确运行映像是另一个问题