11.2. 仮想マシンテンプレートの作成
正常に機能する複数のクローン仮想マシンを作成するには、SSH 鍵や永続的なネットワーク MAC 設定などの、ソース仮想マシンに固有の情報および設定を削除します。これにより、仮想マシンのクローンを簡単かつ安全に作成するのに使用できる仮想マシンテンプレートが作成されます。
仮想マシンのテンプレートは、virt-sysprep
ユーティリティーを使用して 作成するか、要件に基づいて 手動で作成 することができます。
11.2.1. virt-sysprep を使用した仮想マシンテンプレートの作成
既存の仮想マシン (VM) から複製テンプレートを作成するには、virt-sysprep
ユーティリティーを使用できます。これにより、特定のネットワーク設定やシステム登録メタデータなど、クローンが正しく機能しない可能性がある特定の設定が削除されます。その結果、virt-sysprep
は仮想マシンのクローンをより効率的に作成し、クローンがより確実に動作するようにします。
前提条件
virt-sysprep
ユーティリティーを含むguestfs-tools
パッケージがホストにインストールされます。# dnf install guestfs-tools
- テンプレートとして使用するソース仮想マシンがシャットダウンしている。
ソース仮想マシンのディスクイメージの場所を把握しており、その仮想マシンのディスクイメージファイルの所有者である。
libvirt の システムコネクション で作成した仮想マシンのディスクイメージが、デフォルトで
/var/lib/libvirt/images
ディレクトリーにあり、root ユーザーが所有している。# ls -la /var/lib/libvirt/images -rw-------. 1 root root 9665380352 Jul 23 14:50 a-really-important-vm.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 an-actual-vm-that-i-use.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 totally-not-a-fake-vm.qcow2 -rw-------. 1 root root 10739318784 Sep 20 17:57 another-vm-example.qcow2
- オプション: ソース仮想マシンのディスク上の重要なデータがすべてバックアップされている。ソース仮想マシンをそのまま保持する場合は、クローン を作成してから、そのクローンをテンプレートに変換します。
手順
仮想マシンのディスクイメージの所有者としてログインしていることを確認します。
# whoami root
(必要に応じて) 仮想マシンのディスクイメージをコピーします。
# cp /var/lib/libvirt/images/a-really-important-vm.qcow2 /var/lib/libvirt/images/a-really-important-vm-original.qcow2
これは後で、仮想マシンが正常にテンプレートに変換されたことを確認するために使用されます。
次のコマンドを使用し、/var/lib/libvirt/images/a-really-important-vm.qcow2 を、ソース仮想マシンのディスクイメージへのパスに置き換えます。
# virt-sysprep -a /var/lib/libvirt/images/a-really-important-vm.qcow2 [ 0.0] Examining the guest ... [ 7.3] Performing "abrt-data" ... [ 7.3] Performing "backup-files" ... [ 9.6] Performing "bash-history" ... [ 9.6] Performing "blkid-tab" ... [...]
検証
プロセスが成功したことを確認するには、変更したディスクイメージを元のイメージと比較します。次の例は、テンプレートの作成例を示しています。
# virt-diff -a /var/lib/libvirt/images/a-really-important-vm-orig.qcow2 -A /var/lib/libvirt/images/a-really-important-vm.qcow2 - - 0644 1001 /etc/group- - - 0000 797 /etc/gshadow- = - 0444 33 /etc/machine-id [...] - - 0600 409 /home/username/.bash_history - d 0700 6 /home/username/.ssh - - 0600 868 /root/.bash_history [...]
関連情報
-
virt-sysprep
の man ページの OPERATIONS セクション - コマンドラインインターフェイスで仮想マシンのクローン作成
11.2.2. 仮想マシンテンプレートの手動による作成
既存の仮想マシンからテンプレートを作成する場合は、ゲスト仮想マシンを手動でリセットまたは設定解除して、クローン作成の準備をします。
前提条件
ソースの仮想マシンのディスクイメージの場所を把握しており、仮想マシンのディスクイメージファイルの所有者であることを確認します。
libvirt の システムコネクション で作成した仮想マシンのディスクイメージが、デフォルトで
/var/lib/libvirt/images
ディレクトリーにあり、root ユーザーが所有している。# ls -la /var/lib/libvirt/images -rw-------. 1 root root 9665380352 Jul 23 14:50 a-really-important-vm.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 an-actual-vm-that-i-use.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 totally-not-a-fake-vm.qcow2 -rw-------. 1 root root 10739318784 Sep 20 17:57 another-vm-example.qcow2
- 仮想マシンがシャットダウンしていることを確認します。
- (必要に応じて) 仮想マシンのディスクにある重要なデータのバックアップが作成されている。ソースの仮想マシンをそのまま保持する場合は、クローン を作成してから、そのクローンを編集してテンプレートを作成します。
手順
クローンを作成するように仮想マシンを設定します。
- クローンに必要なソフトウェアをインストールします。
- オペレーティングシステムに一意でない設定を設定します。
- 固有でないアプリケーション設定を設定します。
ネットワーク設定を削除します。
以下のコマンドを使用して、永続的な udev ルールを削除します。
# rm -f /etc/udev/rules.d/70-persistent-net.rules
注記udev ルールを削除しないと、最初の NIC の名前が
eth0
ではなくeth1
になる場合があります。/etc/NetworkManager/system-connections/
ディレクトリーのNMConnection
ファイルから一意の情報を削除します。MAC アドレス、IP アドレス、DNS、ゲートウェイ、およびその他の 一意 の情報または望ましくない設定を削除します。
*ID=ExampleNetwork BOOTPROTO="dhcp" HWADDR="AA:BB:CC:DD:EE:FF" <- REMOVE NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet" UUID="954bd22c-f96c-4b59-9445-b39dd86ac8ab" <- REMOVE
-
同様の 一意 の情報と望ましくない設定を
/etc/hosts
および/etc/resolv.conf
ファイルから削除します。
登録の詳細を削除します。
Red Hat ネットワーク (RHN) に登録されている仮想マシンの場合:
# rm /etc/sysconfig/rhn/systemid
Red Hat Subscription Manager (RHSM) に登録されている仮想マシンの場合:
元の仮想マシンを使用しない場合は、次のコマンドを実行します。
# subscription-manager unsubscribe --all # subscription-manager unregister # subscription-manager clean
元の仮想マシンを使用する場合は、以下を行います。
# subscription-manager clean
注記元の RHSM プロファイルは、ID コードとともにポータルに残ります。クローンの作成後、次のコマンドを使用して仮想マシンで RHSM 登録を再アクティブ化します。
# subscription-manager register --consumerid=71rd64fx-6216-4409-bf3a-e4b7c7bd8ac9
その他の固有の詳細を削除します。
SSH 公開鍵と秘密鍵のペアを削除します。
# rm -rf /etc/ssh/ssh_host_example
LVM デバイスの設定を削除します。
# rm /etc/lvm/devices/system.devices
- 複数のマシンで実行している場合に、競合する可能性があるその他のアプリケーション固有の識別子や設定を削除します。
gnome-initial-setup-done
ファイルを削除し、次回のシステムの起動時に設定ウィザードを実行するように仮想マシンを設定します。# rm ~/.config/gnome-initial-setup-done
注記次回の起動時に実行するウィザードは、仮想マシンから削除された設定によって異なります。また、クローンの初回起動時には、ホスト名を変更することが推奨されます。