Windows Server 2022 (Azure VM) の日本語化イメージを用意する Azure VM Image
Windows Server を 日本語化 する
Windows Server を 日本語化 するのって結構時間もかかるし、面倒な感じです。
日本語化した VM イメージを作成しておき、日本語での利用が可能な VM をすぐデプロイできるようにしておきたいと思います。
基本 - デプロイ済み VM を 日本語化する
とはいえ、
イメージ作成なんて面倒、すぐ使える方法は…?
まずは目の前の VM 1台をいますぐ日本語化したいんだけど?
なんて時もあるかと思います。
そんなとき、 @tksh164 さん のスクリプトが非常に便利です。
直接、日本語化済みの Windows Server 2022 Datacenter をデプロイすることや、Windows Server 2019/2022 を日本語化するための PowerShell スクリプト が公開されています。
素晴らしい。
日本語化済み VM をデプロイする | VM を日本語化するスクリプト | |
---|---|---|
URL | Azure デプロイ可能版(PowerShell DSE) | PowerShell版 |
概要 | 日本語化された VM を1台だけデプロイしたいというときは、こちらの GitHub からデプロイをすれば、OKです。 デプロイには多少時間がかかりますが、非常に楽です。 |
デプロイ済みの VM を日本語化したいということであれば、この日本語化スクリプトを実行することで、日本語化できます。 |
実行例 | Github の デプロイボタンからデプロイを行います。 デプロイにかかる時間は 20分程度でした。 ログインしてみます。 日本語化済みの Windows Server 2022 DataCenter Gen2 が起動します。 |
途中で再起動が必要なスクリプトなので、2回に分けて実行します 1回目は 161行目までを実行します。 2回目は、161行目以降から最終行までを実行します。 日本語化されていることが確認できます。 |
Azure VM Image Builder で Windows Server 2022 を 日本語化 する
@tksh164 さん の PowerShell スクリプトを少し改変したものを用意して、Azure VM Image Builder で利用可能にしてみました。
PowerShell の スクリプト が2つありますので、Azure VM Image Builder で 2つとも実行するように構成すれば OK です。
- https://raw.githubusercontent.com/uedait/change-windows-language-regional-settings-ImageBuilder/main/change-ws2022-lang-ja-step1.ps1
- https://raw.githubusercontent.com/uedait/change-windows-language-regional-settings-ImageBuilder/main/change-ws2022-lang-ja-step2.ps1
なお、Azure VM Image Builder については、以下で紹介されている内容が参考になります。
それでは Azure VM Image Builder での Windows Server 2022 の日本語化を試してみます。
手順は、概ね以下のようになります。
マネージドID の作成と権限の付与
マネージドID を作成します。
マネージドID に対して、ImageBuilder を作っていく リソースグループ への権限を付与します。
カスタムロール を作成することもできますが、今回は雑に、共同作成者権限を付与しました。
イメージテンプレートの作成
[イメージテンプレート] を検索し、新規に作成していきます。
[イメージ] を選択する際、 Windows Server 2022 のものを選択します。
選択肢が多いのですが、間違って Core (GUIなし) のものを選択したりしないようにしてください…
また、 [ギャラリー] や [VM イメージ定義] も、ここで新規作成が可能です。
最後に、十分な権限を持つ マネージドID との関連付けも行います。
[カスタマイズ] のタブで、PowerShell スクリプトを実行するように構成します。
以下2つのスクリプトを順番に実行するように構成します。
[Script Source URL] のところにそのまま張り付ければ大丈夫なはずです。
ビルドする
イメージテンプレートが作成された後は、ビルドを行います。
1時間程度かかりました。
VM を作成して確認
ビルドが完了したら、VM を作成して確認してみます。
ログインしてみると、Windows Modules Installer の処理が始まります。
それなりに時間( 5-8 分)がかかります。
日本語化されています。
Sysprep + Azure Portal から VM をキャプチャして Windows Server 2022 日本語化イメージを作成する
日本語化した VM が既にある場合には、そちらを Sysprep で一般化して、使いまわすこともできます。
今回は日本語化しただけの ほぼクリーンな Windows Server で試していますが、既にある程度サーバー役割を持たせている場合(あまりないかとは思いますが)には、以下も参照して Sysprep が可能なのかどうかも確認する必要があります。
さて、Sysprep + Azure Portal から VM をキャプチャ の手順は概ね以下の通りです。
日本語化済みVM を sysprep で 一般化 する
sysprep する方法は 公開ドキュメントに記載があります。
抜粋すると概ね以下の順序です。 公開ドキュメント内の 手順5 までは、PowerShell ではなく cmd での実行なので注意です。
最後の ”仮想マシンのステータスを [一般化] に設定” は、 Azure Portal 上から Cloud Shell で実施すれば OK です。
3.panther ディレクトリ (C:\Windows\Panther) を削除します。
rmdir /s /q C:\Windows\Panther
5.次に、ディレクトリを %windir%\system32\sysprep に変更して、次を実行します。
cd %windir%\system32\sysprep
sysprep.exe /oobe /generalize /mode:vm /shutdown
sysprep (5.まで) を実施すると、VM はシャットダウンされ、Azure VM の状態は [停止済み] となります。
VM は再起動せず、続けて、CloudShell から以下を実施していきます。
Sysprep が完了したら、仮想マシンのステータスを [一般化] に設定します。
Set-AzVm -ResourceGroupName $rgName -Name $vmName -Generalized
Azure Portal から VM をキャプチャ
こちらも、公開ドキュメントがあります。
なお、VMイメージの作成と sysprep は別ですので、最初に sysprep してからキャプチャしましょう。
Azure Compute Gallery (旧称 Shared Image Gallery) に格納されているイメージの場合、アカウントが既に作成されている VM を使用することも (特殊化)、イメージを作成する前に VM を一般化して、マシン アカウントや他のマシン固有の情報を削除することもできます。
一般化まで済ませた VM で キャプチャ を開始します。
10分程度 で、VM イメージ バージョン が作成されます。
VM を作成して確認
VM を作成して確認してみます。
なお、作成したイメージは、[共有イメージ] の中にありますので、ここから選択してデプロイすることもできます。
日本語化されています。
なお、こちらは 1分 とかからず ログイン でき、Azure Image Builder よりも素早く利用を開始できました。
まとめ
それぞれ実施してみた感想など、まとめておきます。
なお、所要時間はあくまでも私の手元で試した限りで、デプロイする VM の SKU 等でも当然違ってくるかと思います。
Azure Image Builder | Sysprep + キャプチャ | |
---|---|---|
日本語化 + Sysprep + イメージ作成の手間 | ビルドボタンを押せば、あとは自動 | 手動 |
イメージ作成 所要時間 | 1時間程度 | Sysprep 2-3分、キャプチャ 10分程度 (日本語化にかかる時間を除く) |
VM初回ログイン 所要時間 | 5-8 分程度 | 数十秒程度 |
メリット | イメージ作成の手間がかからない。 KBが出た後などイメージが更新された場合でも、手間なくビルドして、最新の日本語化イメージを用意しておける。 |
初回ログインの際の「Windows Modules Installer」の処理が無く、初回ログインの所要時間が短い。VMデプロイ後、すぐに検証を開始できる。 |
Azure Image Builder で Windows Modules Installer の処理を省く方法があればいいのですが、ちょっと見つけられませんでした。
何か情報があれば教えてください。
何かのお役に立てば。
参考
Discussion