在使用 virt-install 来配置来宾时,我无法弄清楚用于添加第二个标记 VLAN 的 XPath 语法:
srv01:~$ sudo virt-install\
--name=ds-controller01.iwc.ig24\
--disk source.dev=/dev/vg_ig24.iwc.srv01_ssd/lv_ig24.iwc.ds-controller01_root\
--graphics spice\
--vcpu=2\
--ram=2048\
--os-type=debian10\
--accelerate\
--cdrom=/srv/iso/debian-11.iso\
--network bridge=br0,model=virtio,virtualport_type=openvswitch,mac=$(newmac)\
--xml './devices/interface/vlan[@trunk=yes]/tag/@id=100'\
--xml './devices/interface/target/@dev=ds-controller01'
domxml 的目标是这样的:
<interface type='bridge'>
<mac address='52:54:00:57:df:60'/>
<source bridge='br0'/>
<vlan trunk='yes'>
<tag id='100'/>
<tag id='200'/>
<tag id='300'/>
</vlan>
<virtualport type='openvswitch'>
<parameters interfaceid='23f46a9d-4abf-443e-bdea-6915b95c0042'/>
</virtualport>
<target dev='ds-controller01'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</interface>
我尝试为 vlan/trunk/tag 添加额外的“--xml”,但它只是重写了第一个 --xml 语句。
不太了解 XPath,我找到了两个在线 XML 到 XPath 转换器,XPath Generator Online 和 XMLToolBox。我拼凑了他们的输出,我发现这个有效:
srv01:~$ sudo virt-install\
--name=ds-controller01.iwc.ig24\
--disk source.dev=/dev/vg_ig24.iwc.srv01_ssd/lv_ig24.iwc.ds-controller01_root\
--graphics spice\
--vcpu=2\
--ram=2048\
--os-type=debian10\
--accelerate\
--cdrom=/srv/iso/debian-11.iso\
--network bridge=br0,model=virtio,virtualport_type=openvswitch,mac=$(newmac)\
--xml './devices/interface/vlan[@trunk=yes]/tag/@id=100'\
--xml './devices/interface/vlan/tag[2]/@id=200' \
--xml './devices/interface/vlan/tag[3]/@id=300' \
--xml './devices/interface/target/@dev=ds-controller01'
不起作用的是,在 vlan 200 和 300 的后续标记中包含 [@trunk=yes]。
--xml './devices/interface/vlan[@trunk=yes]/tag/@id=100'\
--xml './devices/interface/vlan[@trunk=yes]/tag[2]/@id=200' \
--xml './devices/interface/vlan[@trunk=yes]/tag[3]/@id=300' \
结果是仅包含 vlan 300:
<interface type='bridge'>
<mac address='52:54:00:9d:15:fd'/>
<source bridge='br0'/>
<vlan trunk='yes'>
<tag id='300'/>
</vlan>
<virtualport type='openvswitch'>
<parameters interfaceid='cedd5495-27b0-4e3c-a109-434f1db8dbc4'/>
</virtualport>
<target dev='ds-controller01'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</interface>