如何使用 virt-install 将 VLAN 信息添加到 VM xml 文件中?

How to add the VLAN information using virt-install to VM xml file?

我正在尝试自动创建虚拟机,但我无法通过 virt-install 将 VLAN 标记添加到 xml 文件。

sudo virt-install --name hosp10 --memory 16384 --vcpus 4 \
  --disk /var/lib/libvirt/images/cloud-full.qcow2,format=qcow2,cache=none,target=vda \
  --boot kernel=/var/lib/libvirt/images/full.vmlinuz,initrd=/var/lib/libvirt/images/full.initrd,kernel_args="root=/dev/vda" \
  --network bridge=br-mgmt,model=virtio,virtualport_type=openvswitch,mac=XX:XX:XX:XX:XX:XX

我想向 --network 添加类似 vlan_id=100 的内容,但似乎不存在这样的选项。有没有办法像下面这样生成 xml?

<interface type="bridge">
      <source bridge="ovs-internal"/>
      <target dev='ext01'/>
      <vlan>
        <tag id='100'/>
      </vlan>
      <model type="virtio"/>
      <virtualport type="openvswitch"/>
      <mac address='vv:vv:vv:vv:vv:vv' />
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>

提前致谢。

似乎没有办法直接使用 virt-install 来做到这一点,但是为什么不使用 Open vSwitch 配置 VLAN 标记呢?

# after running virt-install:
ovs-vsctl set port ext01 tag=100

从版本 3.0.0 开始,virt-install 有一个 --xml 选项,允许您在创建域时使用 XPath 语法直接修改域的 XML。

要添加 VLAN 配置,您需要像这样添加 --xml 选项:

virt-install \
  --network bridge=br-mgmt,model=virtio,virtualport_type=openvswitch,mac=XX:XX:XX:XX:XX:XX \
  --xml './devices/interface/vlan/tag/@id=100' \
  <additional args>

这应该将 <vlan><tag id="100"/></vlan> 添加到第一个接口设备。

如果您有多个接口,可以使用 XPath 语法 select 所需的接口。例如,./devices/interface[2]/vlan/tag/@id=100 将修改第二个接口。