ネコの耳に念仏

ネコの耳に念仏

ガンバらない技術ブログを目指します

【Azure】仮想マシン(VM)の一般化(Sysprep)を試す

VM イメージ作成のため、Azure の VM の一般化を試してみる。

Sysprep とは

Sysprep(シスプレップ)は、「System Preparation」の略で、直訳すると「システム準備」となります。

Sysprep は、OS イメージの展開のために Windows クライアントや Windows Server を一般化するツールです。

一般化とは、Windows から PC 固有の情報を削除することで、それを別の PC にインストールできるようにします。

参考サイト

Sysprep 実行手順

仮想マシンVM)はすでに作成済みの前提とします。

VM イメージ作成用 VM にログイン

VM イメージ作成用 VM へ RDP 接続する。

ディレクトリの削除

管理者権限でコマンドプロンプトを起動し、下記コマンドを実行して「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 の管理画面上では、ステータスが変更されたことが分かる表示は見つけられなかった)