MAASでUEFIなKVMゲストを作成する
はじめに
前回作ったMAAS環境でKVMゲスト管理も行おうとしたところ、PXEの設定をUEFIオンリーにしていたため、そのままではKVMゲストの作成ができませんでした。
環境
MAASサーバ
・Ubuntu 20.04 arm64
・MAAS 2.9
・MAASのインストールはaptで実施
KVMサーバ(MAASを使ってOSインストール済み)
・Ubuntu 20.04 amd64
・MAASでのデプロイ時に「Register as MAAS KVM host」のオプション付与済み。
KVM側対応
KVM/QEMU用UEFIファームウェアのOVMFをインストールしておきます。
$ sudo apt install ovmf
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
ovmf はすでに最新バージョン (0~20191122.bd85bf54-2ubuntu3.1) です。
ovmf は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
今回は既にインストールされてました。
MAAS側対応
MAASのリポジトリからKVMゲストを作成する処理を探すと、以下に行きつきました。
https://github.com/maas/maas/blob/2.9/src/provisioningserver/drivers/pod/virsh.py
libvirt用のXMLファイルを生成してゲストを作成している様子。
コレに手を入れてOVMFを利用するようにします。
<loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
<nvram template='/usr/share/OVMF/OVMF_VARS.fd'></nvram>
をXMLテンプレート部分に追記します。
apt packageでMAASをインストールした場合、
「/usr/lib/python3/dist-packages/provisioningserver/drivers/pod/virsh.py」に該当のファイルがありますので、コレに追記。
DOM_TEMPLATE_AMD64 = dedent(
"""\
<domain type='{type}'>
<name>{name}</name>
<uuid>{uuid}</uuid>
<memory unit='MiB'>{memory}</memory>
<vcpu>{cores}</vcpu>
<os>
<type arch="{arch}">hvm</type>
+ <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
+ <nvram template='/usr/share/OVMF/OVMF_VARS.fd'></nvram>
</os>
<features>
<acpi/>
<apic/>
</features>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>{emulator}</emulator>
<controller type='pci' index='0' model='pci-root'/>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000'
bus='0x00' slot='0x05' function='0x0'/>
</controller>
<serial type='pty'>
<log file="/var/log/libvirt/qemu/{name}-serial0.log" append="off" />
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<graphics type='spice' autoport='yes'>
<image compression='off'/>
</graphics>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
</devices>
</domain>
"""
)
KVMゲストのデプロイ
ブラウザからMAASにログインし、上部メニューから「KVM」を選択、ゲストを配置するKVMホストを選び「Take Action」ボタンから「Compose」を選択。
ゲストの名前やスペックを入力し、「Compose Machine」ボタンをクリック。
「Machines」の一覧にKVMゲストが追加されCommissioningが動き出します。
Commissioningが終われば、あとはオンプレの機器と同様にOSをDeploy可能になります。
ゲストにUbuntuをデプロイしてログインしてみると、
$ ls /sys/firmware/efi/
config_table efivars fw_platform_size fw_vendor runtime runtime-map systab vars
とUEFIで起動していることが確認できます。
おわりに
コードを直接書き換えるというゴリ押し方法なので、他にスマートな手があれば知りたいところ。
Author And Source
この問題について(MAASでUEFIなKVMゲストを作成する), 我々は、より多くの情報をここで見つけました https://qiita.com/ussvgr/items/cff7fd4384416f77e04b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .