電脳世界のケーキ屋さん

考えの甘い甘党エンジニアがいろいろ書くブログ

ラクしてKVMのゲストマシンを作る方法(考察中)

はじめに

何か構築しようと思う際に一回一回ホストOSにログインして virt-install を叩くのは面倒である.
あれはオプションも多く, 確認するのも苦労する. 間違った時は virshdestroy からの undefine を行い, ゲストマシンを削除しなければならないのもやぼったい.

本記事では如何にして楽してゲストマシンを作るかを考察する.

GUIを用いる

この手段を実現するには幾つかの方法がある.
サーバ上では virt-manager などの GUIアプリケーションを動作させることができ, これは私の環境にもデフォルトで入っている(ただしXは無効化しているので当然動作はしないが).
Xで動作しているので, やる気に満ちたエンジニアならSSHで転送してクライアント側で操作なんてことができるかもしれない.

他には Vsphere Client のようなクライアントベースなGUIアプリケーションを用いる方法である.
実はゲストマシン自体を動作させているのは KVM/QEMU であって, libvirt 自体はホストマシンで動作している必要はない.
libvirt でリモートのハイパーバイザにも接続して管理を行うことが可能である.思っていたよりも高機能.
なのでクライアント側で libvirt アプリケーションを動作させて, リモートで KVM/QEMUハイパーバイザを管理するというのもアリ.
しかし, それだけでは何も改善されないので今回は保留である.

個人的にGUIを用いる方法で一番魅力的に感じるのは Webクライアントを使う方法であろうか.
幾つかの選択肢がある.

WebVirtMgr

oVirt

https://ovirt.org
OSSな仮想化基盤ソフトである.
構築大変そうなので保留.

kimchi

https://github.com/kimchi-project/kimchi
KVM/QEMUHTML5ベースな管理ツールとして公開されている.
oVirtに比べて導入は楽そうだが, 機能は控え目.

ツールを用いる

そもそもGUIはグラフィカルなだけで何も楽できていない気がするのである.
個人的にはステータスをGUIで見れればあとはコマンドベースの方がしっくり来る(根拠はない).
なのでゲストマシンの作成を楽に行うツールを考える.

シェルスクリプトにしてしまう

一番やっつけ感があるが, 一度作ってしまえば多少の楽はできるようになる.

#!/bin/bash

GUEST_NAME="VM_TEST01"
CENT_ISO="/iso/CentOS-7-x86_64-Minimal-1708.iso"
ALPINE_ISO="/iso/alpine-extended-3.6.2-x86_64.iso"


virt-install --connect qemu:///system \
  --virt-type kvm \
  --os-type linux \
  --name ${GUEST_NAME} \
  --ram 512 \
  --disk path=/var/lib/libvirt/images/${GUEST_NAME}.img,size=4 \
  --graphics vnc,port=5903,keymap=ja,listen=0.0.0.0,password=password \
  --cdrom=${CENT_ISO}

こんなものでも作ってしまえばテンプレートはサクっと作ってしまえる.
テンプレートで思い出したが, libvirt にはテンプレート機能も存在する.

libvirtでテンプレートを用意しておく

libvirt には管理しているゲストマシンをクローンする機能が存在する.
virt-clone コマンドでサクっと作ることが可能である.
ただクローンはクローンなので細々とした設定をゲストで変更しなければいけないのでやはり面倒.

構成管理ツールを使う

vagrantやAnsibleによるプロビジョニングが行えたら楽だと考えているが導入が面倒.

おわりに

結局殆ど面倒で片付けてしまい, 何も解決できてない.
この記事は追って追記していきます.