Contents
概要
virt-installを使用して仮想マシンを構築します。本稿では仮想マシンの作成とKickstartインストールを合わせて実施しています。
前提条件
OS
CentOS Stream 8を使用します。
SELinux
有効です。無効にする場合はこちらを参照して下さい。
Firewalld
無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。
その他
ベース環境は「仮想化ホスト」を指定している前提です。
設定
virt-installスクリプト
CentOS用のvirt-installスクリプト
virt-installは長くなるのでスクリプトにまとめておいたほうが簡単です。ネットワークで指定するブリッジインターフェイスは予め作成しておきましょう。
#!/bin/bash name=myserver datadir=/var/lib/libvirt/images ksfile=ks-$name.cfg ksfilepath=../kickstart/$ksfile virt-install \ --name $name \ --memory 1536 \ --vcpus 1 \ --location $datadir/CentOS-Stream-8-x86_64-20210402-dvd1.iso \ --extra-args "inst.ks=file:/$ksfile console=ttyS0" \ --initrd-inject $ksfilepath \ --boot uefi \ --os-variant centos-stream8 \ --disk path=$datadir/$name.qcow2,bus=virtio,size=20 \ --network bridge=br10,model=virtio \ --graphics vnc \ --noautoconsole \ --autostart
オプション | 説明 |
---|---|
name | 仮想マシン(インスタンス)の名前を指定します。 |
memory | 仮想マシンに割り当てるメモリ容量を指定します。メモリはos-variantの設定値(OSの種類)で推奨値が異なり、推奨値を下回るメモリ容量の場合はvirt-installの実行時にメッセージが出力されますが、処理は継続します。 |
vcpus | 仮想マシンに割り当てるCPUコア数を指定します。 |
location | インストール元のISOファイルを指定します。SELinuxが有効な環境では/var/lib/libvirt/images以外のディレクトリを指定するとおそらくエラーになります。extra-args, initrd-injectを使用する場合はcdromではなくlocationを使用します。 |
extra-args | CentOSのインストール時にインストーラーに渡すカーネルパラメータです。kickstartのファイル名を指定し、シリアルコンソールを設定(この設定が無いとvirsh consoleで出力されません)しています。 |
initrd-inject | ここで指定したファイルを読み込みます。kickstartのファイル名を指定していますが、こちらはホスト上のパスで指定します。 |
boot | ブートオプションの指定です。 |
os-variant | 指定したOS用に仮想マシンの構成を最適化します。必須ではありませんが推奨される設定です。設定値は”osinfo-query os”コマンドで対象のShort IDを指定します。 |
disk | インストール先のディスクやサイズ等を指定します。 |
network | 仮想マシンが使用するネットワークインターフェイスを指定します。複数設定できます。 |
graphics | グラフィカル表示構成を指定します。virt-managerからVNCでも接続したかった為、vncを指定しています。 |
noautoconsole | ゲストコンソールに自動的に接続しません。–graphics vncとしている場合、このオプションを指定しなければvirt-viewerを起動しようとして先に進まなくなります。 |
autostart | KVMホストの起動時に仮想マシンも自動的に起動します。 |
下記は”osinfo-query os”の出力結果からCentOSを抽出しています(気の利いたフィルタオプションは無い様なのでgrepしています)。一番左側がvirt-installで指定するShort IDとなります。
[root@centos ~]# osinfo-query os | grep centos ** (osinfo-query:118306): WARNING **: 00:31:30.007: Entity http://pcisig.com/pci/1B36/0100 referenced but not defined centos-stream8 | CentOS Stream 8 | 8 | http://centos.org/centos-stream/8 centos5.0 | CentOS 5.0 | 5.0 | http://centos.org/centos/5.0 centos5.1 | CentOS 5.1 | 5.1 | http://centos.org/centos/5.1 centos5.10 | CentOS 5.10 | 5.10 | http://centos.org/centos/5.10 centos5.11 | CentOS 5.11 | 5.11 | http://centos.org/centos/5.11 centos5.2 | CentOS 5.2 | 5.2 | http://centos.org/centos/5.2 centos5.3 | CentOS 5.3 | 5.3 | http://centos.org/centos/5.3 centos5.4 | CentOS 5.4 | 5.4 | http://centos.org/centos/5.4 centos5.5 | CentOS 5.5 | 5.5 | http://centos.org/centos/5.5 centos5.6 | CentOS 5.6 | 5.6 | http://centos.org/centos/5.6 centos5.7 | CentOS 5.7 | 5.7 | http://centos.org/centos/5.7 centos5.8 | CentOS 5.8 | 5.8 | http://centos.org/centos/5.8 centos5.9 | CentOS 5.9 | 5.9 | http://centos.org/centos/5.9 centos6.0 | CentOS 6.0 | 6.0 | http://centos.org/centos/6.0 centos6.1 | CentOS 6.1 | 6.1 | http://centos.org/centos/6.1 centos6.10 | CentOS 6.10 | 6.10 | http://centos.org/centos/6.10 centos6.2 | CentOS 6.2 | 6.2 | http://centos.org/centos/6.2 centos6.3 | CentOS 6.3 | 6.3 | http://centos.org/centos/6.3 centos6.4 | CentOS 6.4 | 6.4 | http://centos.org/centos/6.4 centos6.5 | CentOS 6.5 | 6.5 | http://centos.org/centos/6.5 centos6.6 | CentOS 6.6 | 6.6 | http://centos.org/centos/6.6 centos6.7 | CentOS 6.7 | 6.7 | http://centos.org/centos/6.7 centos6.8 | CentOS 6.8 | 6.8 | http://centos.org/centos/6.8 centos6.9 | CentOS 6.9 | 6.9 | http://centos.org/centos/6.9 centos7.0 | CentOS 7 | 7 | http://centos.org/centos/7.0 centos8 | CentOS 8 | 8 | http://centos.org/centos/8
VyOS用のvirt-installスクリプト
VyOSの場合はオプションが少々異なります。
- Kickstartは利用できない為、extra-args, initrd-injectは指定しない。
- locationは使用できずcdromでISOを指定する必要がある(.treeinfoが無い)。
- UEFIは使用できない為、bootオプションは指定しない。
UEFIについては以前は使用できていましたが、VyOSかCentOSのどちらかのバージョンアップにより現在は使用できないようです。おそらくセキュアブートに関連したものと推測しています。
#!/bin/bash name=testgw datadir=/var/lib/libvirt/images virt-install \ --name $name \ --memory 512 \ --vcpus 1 \ --cdrom $datadir/vyos-1.4-rolling-202106151212-amd64.iso \ --os-variant debian10 \ --disk path=$datadir/$name.qcow2,bus=virtio,size=20 \ --network bridge=br10,model=virtio \ --graphics vnc \ --noautoconsole \ --autostart
VyOSはDebianがベースとなっているのでos-variantはDebianを指定します。
[root@centos ~]# osinfo-query os | grep debian ** (osinfo-query:118852): WARNING **: 00:41:42.439: Entity http://pcisig.com/pci/1B36/0100 referenced but not defined debian1.1 | Debian GNU/Linux 1.1 | 1.1 | http://debian.org/debian/1.1 debian1.2 | Debian GNU/Linux 1.2 | 1.2 | http://debian.org/debian/1.2 debian1.3 | Debian GNU/Linux 1.3 | 1.3 | http://debian.org/debian/1.3 debian10 | Debian 10 | 10 | http://debian.org/debian/10 debian2.0 | Debian GNU/Linux 2.0 | 2.0 | http://debian.org/debian/2.0 debian2.1 | Debian GNU/Linux 2.1 | 2.1 | http://debian.org/debian/2.1 debian2.2 | Debian GNU/Linux 2.2 | 2.2 | http://debian.org/debian/2.2 debian3 | Debian GNU/Linux 3.0 | 3.0 | http://debian.org/debian/3 debian3.1 | Debian GNU/Linux 3.1 | 3.1 | http://debian.org/debian/3.1 debian4 | Debian GNU/Linux 4.0 | 4.0 | http://debian.org/debian/4 debian5 | Debian GNU/Linux 5.0 | 5.0 | http://debian.org/debian/5 debian6 | Debian 6.0 | 6.0 | http://debian.org/debian/6 debian7 | Debian 7 | 7 | http://debian.org/debian/7 debian8 | Debian 8 | 8 | http://debian.org/debian/8 debian9 | Debian 9 | 9 | http://debian.org/debian/9 debiantesting | Debian testing | testing | http://debian.org/debian/testing
VyOSのDebianバージョンは下記で確認できます。
vyos@vyos:~$ cat /etc/debian_version 10.9
補足
以前までは、–hvm, –virt-type, –consoleのオプション設定も行っていましたが、改めて整理してみるとこれらの設定はデフォルト値であり、明示的な設定は不要でした。
virt-installで追加されるファイル
virt-installで仮想マシンを作成すると/etc/libvirt/qemu内に.xmlでのファイルが作成されます。この.xmlが仮想マシン毎の全ての設定となります。また、autostartを有効にした場合は/etc/libvirt/qemu/autostart内に.xmlのシンボリックリンクが作成されます。