カスタムイメージの作成を自動化する「Azure Image Builder」でWindows Server 2019の日本語化に挑戦:Microsoft Azure最新機能フォローアップ(147)
Microsoftは2021年6月30日(米国時間)、これまでパブリックプレビューとして提供していた「Azure Image Builder」の一般提供を開始しました。
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 Service now generally available[英語](Microsoft Azure)
Azure Image Builderの概要とチュートリアルは、以下のドキュメントで説明されています。一般提供開始時点で日本語のサイトはパブリックプレビューの内容のままであることに注意してください。
- Azure Image Builder overview[英語](Microsoft Docs)
- プレビュー:Azure Image Builderの概要(Microsoft Docs)
現在、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に既に公開されているサンプルを使用します。
- Create a Windows VM with Azure Image Builder[英語](Microsoft Docs)
- プレビュー:Azure Image BuilderでWindows VMを作成する(Microsoft Docs)
- Create a new VM image version from an existing image version using Azure Image Builder in Linux[英語](Microsoft Docs)
- プレビュー:LinuxでAzure Image Builderを使用して既存のイメージバージョンから新しいVMイメージバージョンを作成する(Microsoft Docs)
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)。
その後、Azure CLIのコマンドラインをチュートリアルの通りに実行すれば(画面2)、15分ほどでリソースグループ「myWinImgBuilderRG」内に仮想マシンテンプレート「aibWinImage」が作成されます。
画面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)。
テンプレート作成中のリソース(仮想マシンなど)の状況は、作業用に自動作成されるリソースグループ「IT_リソースグループ名_テンプレート名……」で確認することもできます。ビルドが失敗した場合は、このリソースグループ内のストレージアカウントの「packerlogs」コンテナに作成される「customization.log」で詳細を確認できます。
Azure CLIやAzure PowerShell、Azureポータルなど通常の方法を使用して、仮想マシンテンプレートから仮想マシンをデプロイすれば、カスタムイメージから素早く仮想マシンを準備し、実行できます(画面4)
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
画面5 Azure CLIのチュートリアルの「testPsScript.ps1」にOSの日本語化のための処理を組み込んだ。オリジナルサンプルの15分に加え、日本語化のためにさらに40分(合計55分)程度かかった
また、次の画面6の左側は、カスタムテンプレートから仮想マシンをデプロイして、初めてリモートデスクトップ接続したところです。
画面6 カスタムテンプレートから仮想マシンをデプロイしたところ、言語パックのインストールとシステムロケールの変更は成功したが、表示言語の切り替えにはPowerShellのコマンドラインをもう一度実行して再起動する必要があった
初回ログオン時には残念ながら、表示言語と日本語入力が切り替わっていませんでしたが、言語パックがインストール済みであり、システムロケールが「日本語(日本)」になっていることは確認できました。ログオン後、PowerShellで上記の「Set-Culter ja-JP」以降の4行を実行し、再起動することで表示言語と日本語に切り替わりました(画面6の右側)。もう少し工夫が必要なようです。
通常、カスタムイメージを準備する場合、以下のドキュメントにあるように、オンプレミスのHyper-V環境(またはAzure仮想マシン環境)でWindowsまたはLinux仮想マシンのイメージをカスタマイズし、イメージを汎用(はんよう)化して(Windowsの場合は「Sysprep」の実行)、VHDをAzureにアップロードする必要があります。Azure Image Builderを利用すれば、イメージの作成作業を自動化、高速化できるだけでなく、大容量のVHDファイルのアップロードの時間と手間を省くことができます。
- 独自のイメージを使用して仮想マシンを作成する方法(Microsoft Docs)
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。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.
関連記事
- 2023年3月に「仮想マシン(クラシック)」が終了、Azure Resource Managerにできるだけ早く移行を
Microsoftは、2023年3月1日にMicrosoft AzureのIaaSにおける「仮想マシン(クラシック)」の提供を終了します。まだ2年ありますが、もう2年しかないとも言えます。「仮想マシン(クラシック)」で複雑な環境を運用している場合は、テストや移行に時間を要するかもしれません。速やかに移行の検討を開始した方がよいでしょう。 - さよならPHP、WindowsでのPHPのサポートが「2022年11月28日」に完全終了
「PHP」は、古くから人気のあるWebアプリのためのスクリプト言語です。当初はLinux上のApache Webサーバと組み合わせて利用されることが多かったものの、Windowsの「IIS」でも古くからサポートされていました。2020年11月26日に最新バージョン「PHP 8.0」がリリースされましたが、Microsoftはこのバージョンをサポートする予定はありません。 - 2021年にサポートが終了するMicrosoft製品まとめ
前回(第90回)は、Windows 10とMicrosoft Office製品について、2021年以降のサポートライフサイクルを再確認しました。今回は視点を変えて、2021年内にサポートが終了するMicrosoftの製品/技術についてまとめます。 - 今使っているWindows/Officeは大丈夫? 2021年以降を見据えて、各バージョンのライフサイクルを再確認
新型コロナウイルス感染症(COVID-19)拡大の影響を大きく受けた2020年も残すところあとわずか。その影響はどうやら2021年も続きそうです。企業はテレワーク導入の推進を求められたこともあって、企業クライアントPCの更新管理やシステム更改に大きな影響を受けたことでしょう。Windows 10とMicrosoft Office製品について、現時点でのサポートライフサイクルを再確認し、2021年以降の計画に生かしましょう。