【Azure】仮想マシン(VM)の一般化(Sysprep)を試す
VM イメージ作成のため、Azure の VM の一般化を試してみる。
Sysprep とは
Sysprep(シスプレップ)は、「System Preparation」の略で、直訳すると「システム準備」となります。
Sysprep は、OS イメージの展開のために Windows クライアントや Windows Server を一般化するツールです。
一般化とは、Windows から PC 固有の情報を削除することで、それを別の PC にインストールできるようにします。
参考サイト
- イメージ作成前に VM を一般化する - Azure Virtual Machines | Microsoft Learn
- Sysprep (システム準備) の概要 | Microsoft Learn
- [Ansible] Azure Virtual Machines を generalize(一般化)する - てくなべ (tekunabe)
Sysprep 実行手順
VM イメージ作成用 VM にログイン
ディレクトリの削除
管理者権限でコマンドプロンプトを起動し、下記コマンドを実行して「Panther」フォルダを削除する。
rmdir /s /q C:\Windows\Panther
/s
: ファイルやサブディレクトリも含めて削除/q
:/s
で削除する場合に確認メッセージを表示しない
Sysprep の実行
まずは、下記のコマンドを実行するなどしてカレントディレクトリを移動する。
cd %windir%\system32\sysprep
続いて、下記のコマンドを実行して Sysprep を実行する。
sysprep.exe /oobe /generalize /mode:vm /shutdown
Sysprep で VM の一般化が完了すると VM はシャットダウンされるので、以後 VM は再起動しないこと。
なお、このとき VM の状態は「停止済み(割り当て解除)」ではなく「停止済み」となる。
仮想マシンのステータスを変更
Sysprep が完了したら、PowerShell や CloudShell などで下記のコマンドを実行し、VM のステータスを「一般化」に設定する。
Set-AzVm -ResourceGroupName {resourceGroupName} -Name {vmName} -Generalized
VM のステータスが「一般化」に設定されたかどうかは、VM のインスタンスビューから確認することができる。
VM のインスタンスビューを確認するには、下記のコマンドを実行する。
az vm get-instance-view -g {resourceGroupName} -n {vmName} --query instanceView.statuses -o yaml
仮想マシンのステータス変更前の、インスタンスビュー表示結果は下記のとおり。
PS /home/{userName}> az vm get-instance-view -g {resourceGroupName} -n {vmName} --query instanceView.statuses -o yaml - code: ProvisioningState/succeeded displayStatus: Provisioning succeeded level: Info message: null time: '2022-11-18T09:13:28.562429+00:00' - code: PowerState/running displayStatus: VM running level: Info message: null time: null
仮想マシンのステータス変更後の、インスタンスビュー表示結果は下記のとおり。
PS /home/{userName}> az vm get-instance-view -g {resourceGroupName} -n {vmName} --query instanceView.statuses -o yaml - code: OSState/generalized displayStatus: VM generalized level: Info message: null time: null - code: ProvisioningState/succeeded displayStatus: Provisioning succeeded level: Info message: null time: '2022-11-18T07:44:11.850179+00:00' - code: PowerState/stopped displayStatus: VM stopped level: Info message: null time: null
code: OSState/generalized
のブロックが追加され、ステータスが変更されたことがわかる。
(Azure ポータルの VM の管理画面上では、ステータスが変更されたことが分かる表示は見つけられなかった)