cuteip / terraform-provider-libvirt

Terraform provider to provision infrastructure with Linux's KVM using libvirt (customized for CuteIP)
Apache License 2.0
0 stars 0 forks source link

Open vSwitch のブリッジを扱いやすくする #1

Open sobadon opened 2 years ago

sobadon commented 2 years ago

概要

libvrit の domain(libvirt_domain)作成時に、Open vSwitch のブリッジとそのブリッジからどの VLAN を VM に渡すかを直接指定できるようにする。

fork 元の実装では、ブリッジとして直接指定できる(.tf ファイルに記述できる)のは Linux Kernel のブリッジ?(ip コマンドで作成できるブリッジ)のみである。fork 元の Terraform Provider を利用して Open vSwitch のブリッジを指定するには xmlxslt で XML をいじくる必要がある。 参考:Terraform + libvirt + Open vSwitch - Qiita

しかし、こんないじくりを毎度やるのは面倒である。だから、この issue では .tf ファイルにシンプルに記述するだけで Open vSwitch のブリッジから特定の VLAN を VM に渡すなどができるようにする。具体的には以下の項目を直接 .tf ファイルで指定できるようにする。

なお、fork 元は、libvirt のすべての機能を網羅することを予定していないようなので fork 元に PR は送らない。

その他

sobadon commented 2 years ago

Open vSwitch で 1 つの Tagged VLAN を Untag して VM に渡す XML の例。virsh edit のときに virtualportparameters は書かなくても良かった。interfaceidは、Open vSwitch の何らかの指定値ではない様子。

test_vm1.xml ```xml test-vm1 0e7e4d57-6f38-4fff-adf0-06a3a9f25fc6 1048576 1048576 1 hvm qemu64 destroy restart destroy /usr/bin/qemu-system-x86_64 05abcd9e6062ec99
cloudinit
VM 起動中の ovs-vsctl show `vxlan_dev1` が VLAN Trunk している。 ``` $ sudo ovs-vsctl show 1588e296-68b1-41ac-9551-e7eaf22943fc Bridge br_ovs_dev1 Port br_ovs_dev1 Interface br_ovs_dev1 type: internal Port vxlan_dev1 Interface vxlan_dev1 Port vnet2 tag: 2 Interface vnet2 ovs_version: "2.13.8" ```
sobadon commented 2 years ago

Open vSwitch で 1 つの Tagged VLAN を Untag して VM に渡し、もう 1 つの Tagged VLAN をそのまま Tagged のまま VM に渡す XML の例。

<vlan><tag> を複数指定していると、<vlan>trunk='yes' は自動で設定される。virsh edit で編集するとき trunk=yes なしで保存したら自動でそれが追加されていた。

test_vm1.xml ```xml
```
VM 起動中の ovs-vsctl show `vxlan_dev1` が VLAN Trunk している。 ``` $ sudo ovs-vsctl show 1588e296-68b1-41ac-9551-e7eaf22943fc Bridge br_ovs_dev1 Port br_ovs_dev1 Interface br_ovs_dev1 type: internal Port vxlan_dev1 Interface vxlan_dev1 Port vnet2 tag: 2 trunks: [2, 3] Interface vnet2 ovs_version: "2.13.8" ```