Azure Image Builder で日本語化イメージを完全自動作成する (Windows Server 2019 編)

Microsoft Azure

今回はプレビュー中の Azure Image Builder を使い、日本語化イメージを完全自動作成する手順を紹介します。Azure Image Builder は間も無く一般公開予定ですが、現状は CLI のみサポートしています。

スポンサーリンク

GitHub リポジトリ

今回使うテンプレートやスクリプトは次のリポジトリにまとめてあります。ReadMe を追えば実行できます。

GitHub - sny0421/windows-server-2019-japanese
Contribute to sny0421/windows-server-2019-japanese development by creating an account on GitHub.

Image Builder でのイメージ作成全体像

Image Builder でのイメージ作成の流れを次の図で示します。

  1. Image Builder でイメージを作成できるようカスタムロールの付与と、イメージの元となるイメージテンプレートを作成します。
  2. 作成したイメージテンプレートをもとに、自動で仮想マシンの作成・カスタマイズ・イメージ化まで行います。
  3. 作成したイメージをもとに仮想マシンを作成することができます。

今回は共有イメージギャラリーにイメージを保存します。

イメージテンプレート

イメージのカスタマイズ内容やソース、保存先は次のテンプレートで定義しています。(一部置換用の文字列が含まれます)

https://raw.githubusercontent.com/sny0421/windows-server-2019-japanese/master/image-build-template.json

vmProfile

イメージ作成用の仮想マシンのプロパティを指定します。VM サイズは標準だと D1v2 なのでスペックを上げておいた方がいいです。

source

イメージのソースを指定します。Marketplace の他、作成済みのマネージドイメージや共有イメージギャラリーのイメージを指定することもできます。

customize

イメージ作成時に実行するカスタマイズ作業を指示できます。

  • File : ローカルにファイルをダウンロードします。
  • Shell : シェルスクリプトを実行します。
  • WindowsRestart : Windows の再起動を実施します。
  • PowerShell : PowerShell スクリプトを実行します。
  • WindowsUpdate : Windows Update を更新します。

distribute

イメージの保存先を指定します。保存先にはマネージドイメージか共有イメージギャラリーを指定できます。

日本語化スクリプト

今回作った日本語化用のスクリプトを紹介します。

install_language_pack.ps1

言語パックのダウンロードとインストールをします。ja-JP の部分で日本語のインストールを指定しています。

# Download Language pack for Windows Server 2019
## Define download environment variables
### download path
$downloadPath = "C:\LangPack.iso"
### language pack url
$downloadUrl = "https://software-download.microsoft.com/download/pr/17763.1.180914-1434.rs5_release_SERVERLANGPACKDVD_OEM_MULTI.iso"
### downlaod
$wc = New-Object net.webclient
$wc.Downloadfile($downloadUrl, $downloadPath)
# Install Language pack
## ISO mount
Mount-DiskImage $downloadPath
## Get mounted disk letter
$driveLetter = (Get-DiskImage -ImagePath $downloadPath | Get-Volume).DriveLetter
$languagePackPath = $driveLetter + ":\x64\langpacks\Microsoft-Windows-Server-Language-Pack_x64_ja-jp.cab"
## install language pack
lpksetup.exe /i ja-JP /p $languagePackPath /r /s
Wait-Process -Name lpksetup
# Clean file
## Unmount disk
DisMount-DiskImage $downloadPath
## Delete ISO file
Remove-Item $downloadPath 

japanese_setting_1.ps1

表示言語と入力方式を変更します。このスクリプトを実行後、再起動処理をかけます。

#ユーザーが使用する言語を日本語にします。
Set-WinUserLanguageList -LanguageList ja-JP,en-US -Force
#入力する言語を日本語で上書きします。
Set-WinDefaultInputMethodOverride -InputTip "0411:00000411"
#MS-IMEの入力方式を設定します。
Set-WinLanguageBarOption -UseLegacySwitchMode -UseLegacyLanguageBar

japanese_setting_2.ps1

地域やシステムロケールの変更に加え、Welcome 画面とデフォルトユーザーの表示言語を変更します。Welcome 画面とデフォルトユーザーの表示言語を変更するコマンドはないので、地道にレジストリを書き換えます。

#UIの言語を日本語で上書きします。
Set-WinUILanguageOverride -Language ja-JP
#時刻/日付の形式をWindowsの言語と同じにします。
Set-WinCultureFromLanguageListOptOut -OptOut $False
#ロケーションを日本にします。
Set-WinHomeLocation -GeoId 0x7A
#システムロケールを日本にします。
Set-WinSystemLocale -SystemLocale ja-JP
#タイムゾーンを東京にします。
Set-TimeZone -Id "Tokyo Standard Time"
Set-Culture ja-JP
$DefaultHKEY = "HKU\DEFAULT_USER"
$DefaultRegPath = "C:\Users\Default\NTUSER.DAT"
reg load $DefaultHKEY $DefaultRegPath
reg import "C:\ja-JP-default.reg"
reg unload $DefaultHKEY
reg import "C:\ja-JP-welcome.reg"

おそらくこのスクリプトだけでも GUI 操作なくできるようになっていると思います。

Image Builder が GA したらよりカスタマイズがしやすくなるかと思います。今後は Windows Virtual Desktop 用の日本語イメージ作成も試していこうと思います。

参考

Azure VM Image Builder の概要 – Azure Virtual Machines | Microsoft Learn

イメージ構築プロセスを Azure Image Builder で効率化する (microsoft.com)

コメント

タイトルとURLをコピーしました