1

同じものに対して VirtualBox と Qemu ビルダーの両方を持つ Packer テンプレートを作成しようとしています。VirtualBox は正常に動作しますが、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"]
  ],

最初に、少なくとも2番目の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 を呼び出すとエラーが発生したと言っています。私は何を間違っていますか?また、作成したイメージを後で実行するときに、ホストオンリー アダプターを作成するにはどうすればよいですか?

4

1 に答える 1

1

OK、私は元の問題を解決することができました。

問題は、-netdev と -device の両方が必要であり、(実際に私をつまずかせたのは) その順序が重要であるということでした: 「-netdev」が最初で、「-device」が 2 番目です。

さらに、Packer は自身の最初のインターフェースを上書きしているように見えます。これには、明示的な再定義が必要です。その明示的な再定義には、2 つの hostfwd-ed ポートが必要です。Packer はそのうちの 1 つをソース ポートとして使用していると思います。そう:

  "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 がイメージを正常に作成するには十分です。後で実際にイメージを適切に実行することは、別の問題です。

于 2015-06-20T21:45:59.727 に答える