今回はプレビュー中の Azure Image Builder を使い、日本語化イメージを完全自動作成する手順を紹介します。Azure Image Builder は間も無く一般公開予定ですが、現状は CLI のみサポートしています。
GitHub リポジトリ
今回使うテンプレートやスクリプトは次のリポジトリにまとめてあります。ReadMe を追えば実行できます。
Image Builder でのイメージ作成全体像
Image Builder でのイメージ作成の流れを次の図で示します。
- Image Builder でイメージを作成できるようカスタムロールの付与と、イメージの元となるイメージテンプレートを作成します。
- 作成したイメージテンプレートをもとに、自動で仮想マシンの作成・カスタマイズ・イメージ化まで行います。
- 作成したイメージをもとに仮想マシンを作成することができます。
今回は共有イメージギャラリーにイメージを保存します。
イメージテンプレート
イメージのカスタマイズ内容やソース、保存先は次のテンプレートで定義しています。(一部置換用の文字列が含まれます)
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
コメント