17.12. virt-sysprep: 仮想マシン設定のリセット

virt-sysprep コマンドラインツールは、クローンを作成できるよう、ゲスト仮想マシンをリセットしたり、この設定を解除したりするために使用できます。このプロセスでは、SSH ホストキー、永続的なネットワーク MAC 設定、およびユーザーアカウントを削除します。また、virt-sysprep は、SSH キー、ユーザー、またはロゴの追加など、仮想マシンをカスタマイズできます。各ステップは必要に応じて有効にしたり無効にしたりすることができます。
sysprep という用語は、Microsoft Windows システムで使用される System Preparation ツール (sysprep.exe) に由来しますが、現在このツールは Windows のゲストでは動作しません。

注記

libguestfs および guestfish には root 権限が必要ありません。アクセスするディスクイメージの読み取り、書き込み、または読み書きに root アクセスが必要な場合のみ root で実行する必要があります。
virt-sysprep ツールは libguestfs-tools-c パッケージに含まれ、このパッケージは以下のコマンドでインストールできます。
$ yum install libguestfs-tools-c
virt-sysprep ツールのみをインストールするには、以下のコマンドを実行します。
$ yum install /usr/bin/virt-sysprep

重要

virt-sysprep は、実行中のゲストまたはディスクイメージを変更します。virt-sysprep を使用するには、ゲスト仮想マシンをオフラインにする必要があるため、コマンドを実行する前にこれをシャットダウンしてください。ゲスト仮想マシンの既存のコンテンツを保持するには、最初にディスクのスナップショット、コピー、またはクローンを作成する必要があります。ディスクのコピーまたはクローンに関する詳細は、libguestfs.org を参照してください。
virt-sysprep には以下のコマンドを使用できます。

表17.1 virt-sysprep コマンド

コマンド説明
--help特定のコマンドまたはパッケージ全体についての簡潔なヘルプエントリーを表示します。ヘルプの詳細は、virt-sysprep の man ページを参照してください。$ virt-sysprep --help
-a [file] または --add [file]ゲスト仮想マシンからのディスクイメージである指定のファイルを追加します。ディスクイメージの形式は自動検出されます。これを無効にし、特定の形式を強制実行するには、--format オプションを使用します。$ virt-sysprep --add /dev/vms/disk.img
-c [URI] または --connect [URI]libvirt を使用している場合は、指定の URI に接続します。省略されている場合は、KVM ハイパーバイザーから接続されます。ゲストブロックデバイスを直接指定する場合は (virt-sysprep -a)、libvirt は一切使用されません。$ virt-sysprep -c qemu:///system
-d [guest] または --domain [guest]指定されたゲスト仮想マシンからすべてのディスクを追加します。ドメイン UUID をドメイン名の代わりに使用できます。$ virt-sysprep --domain 90df2f3f-8857-5ba9-2714-7d95907b1c9e
-n または --dry-run または --dryrunゲスト仮想マシンに読み取り専用の「dry run」Sysprep 操作を実行します。これは sysprep 操作を実行しますが、最終的にディスクへの変更を破棄します。$ virt-sysprep -n
--enable [operations]指定された 操作 を有効にします。使用可能な操作を一覧表示するには、--list コマンドを使用します。$ virt-sysprep --enable ssh-hotkeys,udev-persistent-net
--format [raw|qcow2|auto]-a オプションは、デフォルトでディスクイメージの形式を自動検出します。これを使用すると、コマンドラインに続く -a オプションのディスク形式が強制実行されます。--format auto を使用すると、後続の -a オプションの自動検出に切り替わります (上記の -a コマンド参照)。$ virt-sysprep --format raw -a disk.img は disk.img の raw 形式 (自動検出なし) を強制しますが、virt-sysprep --format raw -a disk.img --format auto -a another.imgdisk.img の raw 形式 (自動検出なし) を強制実行してから another.img の自動検出に戻ります。信頼されていない raw 形式のゲストディスクイメージがある場合、このオプションを使用してディスク形式を指定する必要があります。これにより、悪意のあるゲストに関連するセキュリティー上の問題を防ぐことができます。
--list-operationsvirt-sysprep プログラムでサポートされる操作を一覧表示します。これらの操作は 1 行に 1 つずつ表示され、1 つのスペースで区切られたフィールドが 1 つ以上含まれます。出力の最初のフィールドには、--enable フラグに指定できる操作名が入ります。2 つ目のフィールドには、操作がデフォルトで有効である場合は * 文字が入り、有効でない場合は空白になります。同じ行の追加フィールドには操作の説明が入ります。
   $ virt-sysprep --list-operations
 bash-history * Remove the bash history in the guest
 cron-spool * Remove user at-jobs and cron-jobs
 dhcp-client-state * Remove DHCP client leases
 dhcp-server-state * Remove DHCP server leases
...
--mount-optionsゲスト仮想マシンの各マウントポイントについてマウントオプションを設定します。マウントポイントとオプションのペア (mountpoint:options) のセミコロンで区切られた一覧を使用します。この一覧を引用符で囲み、シェルでこれを保護する必要がある場合があります。$ virt-sysprep --mount-options "/:notime" は、notime 操作でルートディレクトリーをマウントします。
--selinux-relabel および --no-selinux-relabelvirt-sysprep は、ゲストの最初の起動時に SELinux の再ラベル付けを常にスケジュールするわけではありません。場合によっては再ラベル付けは実行されますが (virt-sysprep に変更されたファイルが存在する場合など)、すべての操作によってファイルの削除のみが行われる場合、(--enable delete --delete /some/file を使用する場合など) 再ラベル付けはスケジュールされません。--selinux-relabel オプションを使用すると、常に SELinux の再ラベル付けが強制されますが、--no-selinux-relabel を設定すると再ラベル付けはスケジュールされません。ファイルに正しい SELinux ラベルが付けられるようにするため、--selinux-relabel を使用することが推奨されます。$ virt-sysprep --selinux-relabel
-q または --quietログメッセージが出力されないようにします。$ virt-sysprep -q
-v または --verboseデバッグ目的で詳細なメッセージを有効にします。$ virt-sysprep -v
-V または --versionvirt-sysprep バージョン番号を表示し、終了します。$ virt-sysprep -V
詳細は libguestfs ドキュメント を参照してください。