Google Cloud 上に Windows VM を作成するには、Windows または Windows Server がプリインストールされている VM イメージを使用する必要があります。Google Cloud では、一般的に使用されているバージョンの Windows Server 用の公開イメージを提供しています。ただし、これらが適しているのは、オンデマンド ライセンスに限られます。お客様所有の Windows ライセンス(BYOL)を使用するには、既存のイメージをインポートするか、カスタム イメージをビルドする必要があります。
このガイドでは、Google Cloud が公開イメージの作成に使用するのと同じツールとプロセスを使用してカスタム イメージを作成する方法を説明します。
このガイドを完了するには、次のものが必要です。
- Windows または Windows Server のインストール メディアを含む ISO ファイル。
- (省略可)イメージに適用する 1 つ以上の Windows 更新パッケージ(
.msu
形式)。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud のサービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 新しいディスクを作成する。
- Windows イメージ(インストール メディアからの
install.wim
)をディスクに抽出する。 - 必要なドライバを追加して、Windows セットアップがそのまま動作するように構成し、ディスクを起動可能にする。
- 新しいディスクから起動して Windows セットアップを実行する。
- ゲスト OS エージェントなどの追加ソフトウェアをインストールする。
- ディスクからイメージを作成する。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API, Cloud Build API, and Cloud Storage API APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API, Cloud Build API, and Cloud Storage API APIs.
- ローカル コンピュータで Windows PowerShell ウィンドウを開きます。
変数を初期化します。
$PROJECT_ID = "
PROJECT_ID
"PROJECT_ID
は、前のセクションで作成した Google Cloud プロジェクトのプロジェクト ID です。別の変数を初期化して、このプロジェクトのプロジェクト番号を格納します。
$PROJECT_NUMBER = gcloud projects describe $PROJECT_ID --format=value`(projectNumber`)
- ローカル コンピュータでターミナル ウィンドウを開きます。
変数を初期化します。
PROJECT_ID=
PROJECT_ID
PROJECT_ID
は、前のセクションで作成した Google Cloud プロジェクトのプロジェクト ID です。別の変数を初期化して、このプロジェクトのプロジェクト番号を格納します。
PROJECT_NUMBER=`gcloud projects describe $PROJECT_ID --format=value\(projectNumber\)`
ローカル コンピュータで、必要なインストール パッケージをダウンロードします。
インストール ファイルを格納する新しい Cloud Storage バケットを作成します。
gcloud storage buckets create gs://$PROJECT_ID-media --project=$PROJECT_ID
Storage オブジェクト閲覧者のロールを Cloud Storage に付与して、インストール ファイルの読み取りを行えるようにします。
gcloud storage buckets add-iam-policy-binding gs://$PROJECT_ID-media --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com --role=roles/storage.objectViewer
PowerShell インストール パッケージをアップロードします。
gcloud storage cp
POWERSHELL_PACKAGE
gs://$PROJECT_ID-media/PowerShell.msiここで、
POWERSHELL_PACKAGE
は PowerShell インストール パッケージのパスです。.NET Framework インストール パッケージをアップロードします。
gcloud storage cp
DOTNET_PACKAGE
gs://$PROJECT_ID-media/dotnet-sdk.exeここで、
DOTNET_PACKAGE
は、NET Framework インストール パッケージのパスです。gcloud CLI インストール パッケージをアップロードします。
gcloud storage cp
CLOUDSDK_PACKAGE
gs://$PROJECT_ID-media/GoogleCloudSDKInstaller.exeここで、
CLOUDSDK_PACKAGE
は gcloud CLI インストール パッケージのパスです。Windows インストール メディアを含む ISO ファイルをアップロードします。
gcloud storage cp
ISO
gs://$PROJECT_ID-media/ここで、
ISO
は ISO ファイルの名前です。(省略可)追加のアップデート パッケージをアップロードします。
gcloud storage cp
UPDATE_DIR
/*.msu gs://$PROJECT_ID-media/updates/ここで、
UPDATE_DIR
はアップデート パッケージを含むディレクトリです。ローカル コンピュータで、Windows イメージをビルドするための
daisy
ワークフローを含む Git リポジトリのクローンを作成します。git clone https://github.com/GoogleCloudPlatform/compute-image-tools.git
windows
ディレクトリに切り替えます。cd compute-image-tools/daisy_workflows/image_build/windows/
windows
ディレクトリで、.wf.json
というサフィックスが付いたさまざまなファイルの一覧を確認できます。これらのファイルには、一般的に使用される Windows のバージョンに対する daisy ワークフロー定義が含まれています。Windows のバージョン ワークフロー ファイル Windows Server Core 2022(64 ビット) windows-server-2022-dc-core-uefi-byol.wf.json
Windows Server 2019(64 ビット) windows-server-2019-dc-uefi-byol.wf.json
Windows Server Core 2019(64 ビット) windows-server-2019-dc-core-uefi-byol.wf.json
Windows Server 2016(64 ビット) windows-server-2016-dc-uefi-byol.wf.json
Windows Server Core 2016(64 ビット) windows-server-2016-dc-core-uefi-byol.wf.json
Windows 11 21H2(64 ビット) windows-11-21h2-ent-x64-uefi.wf.json
Windows 11 22H2(64 ビット) windows-11-22h2-ent-x64-uefi.wf.json
Windows 11 23H2(64 ビット) windows-11-23h2-ent-x64-uefi.wf.json
Windows 10 21H2(64 ビット) windows-10-21h2-ent-x64-uefi.wf.json
Windows 10 22H2(64 ビット) windows-10-22h2-ent-x64-uefi.wf.json
インストールする Windows のバージョンに最も近いワークフロー ファイルを開きます。必要に応じて、ワークフロー ファイル内の Windows エディション(
edition
)とライセンスキー(product_key
)の設定を変更して、インストール メディアと一致させます。正しいエディション名がわからない場合は、昇格した PowerShell プロンプトを開き、次のコマンドを実行すると、対象のインストール メディアでサポートされているすべてのエディションが一覧表示されます。
$IsoFile = "
ISO
" $Mount = Mount-DiskImage -ImagePath (Resolve-Path $IsoFile) $DriveLetter = ($Mount | Get-Volume).DriveLetter Get-WindowsImage -ImagePath "$($DriveLetter):\sources\install.wim" | select ImageName Dismount-DiskImage -InputObject $Mount | Out-NullISO
は、ISO イメージのローカルパスに置き換えます。windows
ディレクトリに、cloudbuild.yaml
という名前のファイルを新しく作成して、次のコードを貼り付けます。timeout: 14400s # 4 hour timeout for entire build steps: - name: 'gcr.io/compute-image-tools/daisy' timeout: 14400s # 4 hour timeout for build step waitFor: ['-'] args: - -project=$PROJECT_ID - -zone=us-central1-a - -var:updates=gs://$PROJECT_ID-media/updates/ - -var:pwsh=gs://$PROJECT_ID-media/PowerShell.msi - -var:dotnet48=gs://$PROJECT_ID-media/dotnet-sdk.exe - -var:cloudsdk=gs://$PROJECT_ID-media/GoogleCloudSDKInstaller.exe - -var:media=gs://$PROJECT_ID-media/
ISO
-WORKFLOW
以下のように置き換えます。
ISO
: Cloud Storage 上の ISO ファイルの名前。WORKFLOW
: 使用している Windows のバージョンに対応するワークフロー ファイルの名前。
Cloud Build にビルドを送信します。
gcloud builds submit --project $PROJECT_ID --async
ビルドが完了するまでに最大で 4 時間ほどかかります。Google Cloud コンソールの [Cloud Build] > [履歴] でビルドのステータスを追跡できます。
- 適切なインストール パッケージと ISO ファイルをアップロードしたことを確認します。
- Windows の ISO ファイルのバージョンと一致するワークフローが選択されていることを確認します。
- Cloud Build のビルドログを確認し、エラー メッセージがあるかどうか確認します。
- ビルドが停止していると思われる場合は、ビルドによって作成された VM インスタンスのシリアルポート出力を確認し、エラー メッセージをチェックします。
- daisy ツールの詳細を確認する。
- イメージのビルドに使用するデイジー ワークフローの詳細を確認する。
- Compute Engine で既存のライセンスを使用する方法を学習する。
- イメージ ファミリーの使用に関するベスト プラクティスを読む。
ビルドプロセスについて
Windows をゼロからインストールするには、Windows インストール ファイルを含む DVD または ISO ファイルからコンピュータを起動するのが一般的な方法です。一部のオンプレミス ハイパーバイザとは異なり、Compute Engine では ISO ファイルからは起動できません。
したがって、Windows をゼロからインストールするには別のアプローチを採用する必要があります。それには以下の手順が含まれます。
このガイドでは、これらの手順を手動で行うのではなく、Cloud Build、
daisy
ツール、GitHub で公開されている参照ワークフローを使用してプロセスを自動化する方法を説明します。daisy
はオープンソースのコマンドライン ツールで、ワークフローを実行できます。ワークフローは、一連の手順が記述された JSON ファイルとして作成されます。各ステップでは、ディスクの作成や VM インスタンスのシャットダウンなど、Compute Engine の操作について説明します。daisy ワークフローは、Windows イメージをゼロからビルドするのに必要な手順の自動化に適しています。Windows のカスタム イメージをビルドするための daisy ワークフローにより、2 つの一時的な VM インスタンスが作成されます。最初の VM インスタンス(接頭辞
bootstrap
)は、起動可能なディスクの作成に必要な手順を行います。2 番目の VM インスタンス(接頭辞install
)は、Windows セットアップを実行して、残りのすべての手順を行います。イメージのビルド用にプロジェクトを準備する
既存の VM インスタンスまたはインフラストラクチャに daisy ツールが干渉しないようにするため、イメージビルド専用のプロジェクトを作成します。
次の手順は、ローカル コンピュータで Windows と Linux のいずれを使用しているかによって異なります。
Windows
Linux
インストール ファイルをアップロードする
カスタム イメージに必要なすべてのインストール ファイルを収集して、Cloud Storage バケットにアップロードします。ファイルを Cloud Storage バケットに格納することで、
daisy
、およびdaisy
がイメージのビルドに使用する一時的な VM インスタンスがファイルにアクセスできるようになります。これで、カスタム イメージをビルドする準備が整いました。
イメージをビルドする
daisy
ワークフローを実行してカスタム イメージをビルドするには、最大 4 時間ほどかかります。daisy
をローカルで実行するのではなく、Cloud Build がバックグラウンドでワークフローを実行できるようにするために Cloud Build の構成を作成します。カスタム イメージを使用する
ビルドが完了したら、Google Cloud コンソール の [Compute Engine] > [イメージ] で BYOL のカスタム イメージを確認できます。
同じイメージの複数のバージョンを区別できるように、ビルドプロセス時に、イメージ名にタイムスタンプが埋め込まれます(例:
windows-server-2019-dc-v1613488342
)。また、このプロセス時に、イメージとカスタム イメージ ファミリー(windows-server-2019
など)が関連付けられます。BYOL のカスタム イメージを使用する VM インスタンスを作成するには、単一テナントノードに VM インスタンスをプロビジョニングする必要があります。
トラブルシューティング
ビルドプロセスが失敗した、または停止していると思われる場合は、次の方法で状況を診断してください。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-22 UTC。
-