検索
連載

カスタムイメージの作成を自動化する「Azure Image Builder」でWindows Server 2019の日本語化に挑戦Microsoft Azure最新機能フォローアップ(147)

Microsoftは2021年6月30日(米国時間)、これまでパブリックプレビューとして提供していた「Azure Image Builder」の一般提供を開始しました。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Microsoft Azure最新機能フォローアップ」のインデックス

Microsoft Azure最新機能フォローアップ

Azure Image Builderによるカスタムイメージ作成の自動化

 「Azure Image Builder」は、WindowsおよびLinux仮想マシン(VM)のカスタムイメージ作成をMicrosoft Azure上で自動化できるマネージドサービスです。Azure Image Builderを利用すると、セキュリティ要件やコンプライアンス要件、構成済みのソフトウェア、設定を含むWindowsおよびLinux仮想マシンイメージを標準化し、クラウド(Microsoft AzureおよびAzure Stack HCI)への移行やデプロイで一貫性を保つのに役立ちます。

 Azure Image Builderは2019年5月からパブリックプレビューとして提供されてきましたが、2021年6月30日(米国時間)に一般提供が開始されたことが発表されました。一般提供の開始により、Azure Image Builderによるカスタムイメージの作成と仮想マシンのデプロイを運用環境に適用することができます。

 Azure Image Builderの概要とチュートリアルは、以下のドキュメントで説明されています。一般提供開始時点で日本語のサイトはパブリックプレビューの内容のままであることに注意してください。

 現在、Azure Image Builderでカスタムイメージが作成できるのは、一部のリージョンとなっています(東日本/西日本リージョンでは未提供)。

Azure CLIまたはAzure PowerShellを使用したカスタマイズ方法

 Azure Image Builderの利用者は、イメージのソースやカスタマイズ内容を記述した構成ファイル(JSONファイル)をGitHubなどを介してAzure Image Builderサービスに送信して、カスタムイメージを含む仮想マシンテンプレートまたはAzure Stack HCI用のVHDイメージの作成を自動化できます。

 Windows仮想マシンとしては「Windows Server 2016」「Windows Server 2019」と、「Azure Virtual Desktop(旧称、Windows Virtual Desktop)」向けの「Windows 10 バージョン1809」のEnterprise、Enterprise Multi-session、Proエディションを、Linux仮想マシンとしてはUbuntu、Red Hat Enterprise Linux(RHEL)、CentOS、SUSE Linux Enterprise Server(SLES)の一部のバージョンをサポートしており、Azure Marketplaceのパブリックイメージまたは既存のカスタムイメージに、独自のカスタマイズを追加できます。

 以下のドキュメントでは、ごく簡単なカスタマイズを自動化して、WindowsまたはLinux仮想マシンのテンプレートを作成する手順が示されています。カスタマイズ用の構成ファイル(JSONファイル)のテンプレートは、パブリックなGitHubに既に公開されているサンプルを使用します。

 Windows仮想マシンの例は、Azure Marketplace上の「Windows Server 2019 Datacenter」(英語版)の最新(latest)イメージをカスタマイズしてテンプレートを作成します。具体的なカスタマイズの内容は、以下の通りです。

(1)GitHubからPowerShellスクリプトをダウンロードして実行する(「C:\buldArtiacts」ディレクトリを作成して、「C:\buildArtifacts\azureImageBuilder.txt」を作成するだけの簡単なものです)

(2)Windowsを再起動する

(3)PowerShellのコマンドラインを実行する(「C:\buldArtiacts」ディレクトリを作成します)

(4)GitHubからファイルを仮想マシンにコピーする(「C:\buldArtiacts\index.html」が配置されます)

(5)Windows Updateを実行して、利用可能な更新プログラム(更新プログラムのプレビューを含む)を全てインストールする

(6)オプションで「ビルドタイムアウト」「仮想マシンサイズとネットワークのプロパティ」「SOディスクサイズ」「ビルド中に使用する識別子(Identity)」の設定をカスタマイズする


 Azure Image Builderは、ほとんど全ての操作を「Azure CLI」(LinuxおよびWindows仮想マシン)または「Azure PowerShell」(Windows仮想マシンのみ)で行います。ローカルにこれらの環境を準備しなくても、「Azure Cloud Shell」の「bash」または「PowerShell」から実行できます。

 Azure CLIの場合は、まず、Azure Image Builderに必要な機能(プロバイダー)が未登録であれば、登録します(画面1)。

画面1
画面1 Azure Cloud Shellのシェル環境を開き、Azure CLIで前提となる機能(プロバイダー)を登録する

 その後、Azure CLIのコマンドラインをチュートリアルの通りに実行すれば(画面2)、15分ほどでリソースグループ「myWinImgBuilderRG」内に仮想マシンテンプレート「aibWinImage」が作成されます。

画面2
画面2 Azure Cloud Shellのシェル環境でGitHubからダウンロードした構成ファイル(JSON)をさらにカスタマイズし、Azure CLIで関連リソースを作成する。この後、「az resource invoke-action」コマンドでテンプレートの作成を開始する

 ただし、チュートリアルには1カ所ミスがありました。「Create user-assigned managed identity and grant permissions」の最後のコマンドラインの「--role $imageRoleDefName \」を「--role "$imageRoleDefName" \」に修正することでエラーを解消できます(※英語版のドキュメントについては間もなく修正される予定です)。

 なお、最後の「Start the image build」の手順は、Azureポータルでリソースグループのリソースを開き、「ビルドの開始」ボタンのクリックで開始することもできますし、ビルドの実行状態を参照することもできます(画面3)。

画面3
画面3 Azure Image Builder用のリソースグループ内に作成された仮想マシンテンプレート

 テンプレート作成中のリソース(仮想マシンなど)の状況は、作業用に自動作成されるリソースグループ「IT_リソースグループ名_テンプレート名……」で確認することもできます。ビルドが失敗した場合は、このリソースグループ内のストレージアカウントの「packerlogs」コンテナに作成される「customization.log」で詳細を確認できます。

 Azure CLIやAzure PowerShell、Azureポータルなど通常の方法を使用して、仮想マシンテンプレートから仮想マシンをデプロイすれば、カスタムイメージから素早く仮想マシンを準備し、実行できます(画面4

画面4
画面4 Azure Image Builderで作成したWindows Server 2019のカスタムテンプレートかデプロイした仮想マシン。「index.html」の配置が主なカスタマイズ内容

Windows Server 2019の日本語化に挑戦

 Azure CLIを使用する必要がある点はハードルが高いかもしれませんが、チュートリアルを一度実行してみて、カスタムイメージの作成に使用された構成ファイル(helloImageTemplateWin.json)の内容と突き合わせれば、Azure Image Builderの使い方やカスタマイズの方法を理解できると思います。

 コマンドラインで自動実行できるものであれば、そんなに難しくないでしょう。例えば、言語パックをインストールして表示言語やシステムロケールを「日本語(日本)」にカスタマイズする作業を自動化できるでしょう。

 具体的には、「Visual Studioサブスクリプション」やボリュームライセンスなどを通じて提供される言語パックISOイメージ内の「x64\langpacks\Microsoft-Windows-Server-Language-Pack_x64_ja-jp.cab」を、何らかの方法(「Invoke-WebRequest」コマンドレットや「curl」コマンドなど)で仮想マシンのC:ドライブ上の任意のディレクトリにコピーした上で、言語パックのインストールと表示言語、システムロケールの設定をコマンドラインで実行してあげればよいのです。

 次の画面5は、筆者個人のGitHubの公開リポジトリに、Azure CLIのチュートリアルの構成ファイル(JSONファイル)をコピーした上で、サンプルスクリプト「testPsScript.ps1」に以下のようなコマンドラインを追加して、管理者として実行させたものです(helloImageTemplateWin.jsonを「"runElevated": true」に変更)。

curl https://<言語パックのダウンロードURL>/Microsoft-Windows-Server-Language-Pack_x64_ja-jp.cab -o c:\buildArtifacts\Microsoft-Windows-Server-Language-Pack_x64_ja-jp.cab
Add-WindowsPackage -Online -PackagePath c:\buildArtifacts\Microsoft-Windows-Server-Language-Pack_x64_ja-jp.cab -ErrorAction stop | Out-Null
Add-WindowsCapability -Online -Name Language.Basic~~~ja-JP~0.0.1.0 -ErrorAction stop | Out-Null
Add-WindowsCapability -Online -Name Language.Fonts.Jpan~~~und-JPAN~0.0.1.0 -ErrorAction stop | Out-Null
Add-WindowsCapability -Online -Name Language.Handwriting~~~ja-JP~0.0.1.0 -ErrorAction stop | Out-Null
Add-WindowsCapability -Online -Name Language.OCR~~~ja-JP~0.0.1.0 -ErrorAction stop | Out-Null
Add-WindowsCapability -Online -Name Language.Speech~~~ja-JP~0.0.1.0 -ErrorAction stop | Out-Null
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~ja-JP~0.0.1.0 -ErrorAction stop | Out-Null
Set-WinUILanguageOverride ja-JP -ErrorAction stop | Out-Null
Set-Culture ja-JP
$mylang = New-WinUserLanguageList ja
Set-WinUserLanguageList $mylang -Force
Set-WinDefaultInputMethodOverride '0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}'
Set-WinSystemLocale ja-JP
▲サンプルスクリプト「testPsScript.ps1」に追記したコマンドライン
画面5
画面5 Azure CLIのチュートリアルの「testPsScript.ps1」にOSの日本語化のための処理を組み込んだ。オリジナルサンプルの15分に加え、日本語化のためにさらに40分(合計55分)程度かかった

 また、次の画面6の左側は、カスタムテンプレートから仮想マシンをデプロイして、初めてリモートデスクトップ接続したところです。

画面6
画面6 カスタムテンプレートから仮想マシンをデプロイしたところ、言語パックのインストールとシステムロケールの変更は成功したが、表示言語の切り替えにはPowerShellのコマンドラインをもう一度実行して再起動する必要があった

 初回ログオン時には残念ながら、表示言語と日本語入力が切り替わっていませんでしたが、言語パックがインストール済みであり、システムロケールが「日本語(日本)」になっていることは確認できました。ログオン後、PowerShellで上記の「Set-Culter ja-JP」以降の4行を実行し、再起動することで表示言語と日本語に切り替わりました(画面6の右側)。もう少し工夫が必要なようです。

 通常、カスタムイメージを準備する場合、以下のドキュメントにあるように、オンプレミスのHyper-V環境(またはAzure仮想マシン環境)でWindowsまたはLinux仮想マシンのイメージをカスタマイズし、イメージを汎用(はんよう)化して(Windowsの場合は「Sysprep」の実行)、VHDをAzureにアップロードする必要があります。Azure Image Builderを利用すれば、イメージの作成作業を自動化、高速化できるだけでなく、大容量のVHDファイルのアップロードの時間と手間を省くことができます。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2020-2021)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る