Windows アプリケーションのインストール メディアの多くは ISO ファイルとして提供されていますが、Compute Engine では、仮想 DVD ドライブとして ISO ファイルを VM インスタンスに公開することはできません。
1 台の Windows VM で ISO ファイルのコンテンツにアクセスするには、次のいずれかの操作を行います。
ISO ファイルを VM にコピーし、ローカルにマウントします。この方法は、1 つの VM インスタンスで ISO ファイルのコンテンツにアクセスする必要がある場合に適しています。
ISO ファイルから永続ディスクを作成し、このディスクを読み取り専用モードで 1 つ以上の VM インスタンスに接続します。この方法は、複数の VM が ISO ファイルのコンテンツにアクセスする必要がある場合に適しています。
このドキュメントでは、ISO ファイルから永続ディスクを作成し、ディスクを読み取り専用モードで 1 つ以上の VM にアタッチする方法について説明します。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、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.
Google Cloud コンソールで、[Cloud Shell をアクティブにする] ボタンをクリックして Cloud Shell を開きます。
ダウンロード URL の環境変数を作成します。URL には HTTP または HTTPS の URL を指定できますが、匿名でアクセスできる必要があります。
ISO_URL=https://example.com/big.iso
Google Cloud コンソールで、Cloud Storage バケットを作成します。
-
ISO ファイルのサイズによっては、アップロードに数分または数時間かかることがあります。
ストレージ ブラウザで、アップロードしたオブジェクトに移動します。
[オブジェクトの詳細] ページで、オブジェクトの URI をコピーします。URI は
gs://
で始まります。[Cloud Shell をアクティブにする] ボタンをクリックして、Cloud Shell を開きます。
ダウンロード URL の環境変数を作成します。
URI
は、コピーした URI で置き換えます。ISO_URL=URI
Cloud Shell で、新しいディスクに割り当てる名前を指定します。
DISK_NAME=iso
ISO ファイルのコピー先となる新しいディスクを作成します。
gcloud compute disks create $DISK_NAME \ --size=10GB \ --zone=$(gcloud config get-value compute/zone)
ISO ファイルが 9 GB を超える場合は、より大きなディスクサイズを使用します。
一時的な VM に起動スクリプトを作成します。起動スクリプトによって次のアクションが実行されます。
- セカンダリ ディスクを NTFS ファイル システムでフォーマットします。
- 指定した HTTP または Cloud Storage の URL から ISO ファイルをダウンロードします。
- ISO ファイルをマウントし、そのコンテンツをセカンダリ ディスクにコピーします。
cat << "EOF" > startup.ps1 $DownloadDirectory = 'c:\download\' $ErrorActionPreference = 'Stop' $MetadataUrl = 'http://metadata.google.internal/computeMetadata/v1/instance' $DownloadUrl = (Invoke-RestMethod ` -Headers @{"Metadata-Flavor" = "Google"} ` -Uri "$MetadataUrl/attributes/iso") mkdir $DownloadDirectory\Source -Force Write-Host '== Formatting secondary disk... ===' -ForegroundColor Black -BackgroundColor Yellow Set-Disk -Number 1 -IsOffline $false Clear-Disk -Number 1 -RemoveData -Confirm:$false -ErrorAction SilentlyContinue Initialize-Disk -Number 1 -PartitionStyle MBR New-Partition -DiskNumber 1 -UseMaximumSize -DriveLetter D -IsActive | Format-Volume -FileSystem 'NTFS' -Confirm:$false Write-Host '== Downloading ISO... =============' -ForegroundColor Black -BackgroundColor Yellow if ($DownloadUrl.StartsWith('gs:')) { & gcloud storage cp $DownloadUrl "$DownloadDirectory\Source\image.iso" | Out-Default } else { Import-Module BitsTransfer Start-BitsTransfer -Source $DownloadUrl -Destination "$DownloadDirectory\Source\image.iso" } Write-Host '== Mounting ISO... ================' -ForegroundColor Black -BackgroundColor Yellow Mount-DiskImage -ImagePath "$DownloadDirectory\Source\image.iso" -StorageType ISO Write-Host '== Copying ISO contents... ========' -ForegroundColor Black -BackgroundColor Yellow Copy-Item 'e:\*' 'd:\' -Force -Recurse -PassThru ` | Where-Object { -Not $_.PSIsContainer } ` | Set-ItemProperty -Name IsReadOnly -Value $False Write-Host '== Completed. =====================' -ForegroundColor Black -BackgroundColor Yellow Invoke-RestMethod ` -Headers @{'Metadata-Flavor'='Google'} ` -Method PUT ` -Uri "$MetadataUrl/guest-attributes/vm/ready" ` -Body true EOF
起動スクリプトと前に作成したディスクを使用する Windows Server 2019 VM を作成します。
gcloud compute instances create iso-copier \ --machine-type=n1-standard-2 \ --image-family=windows-2019-core \ --image-project=windows-cloud \ --disk=name=$DISK_NAME,auto-delete=no \ --metadata=enable-guest-attributes=true,iso=$ISO_URL \ --metadata-from-file=windows-startup-script-ps1=startup.ps1 \ --scopes=https://www.googleapis.com/auth/devstorage.read_only
VM の起動には 2 分ほどかかります。ISO ファイルのサイズによっては、ファイルのコピーが完了するまでにさらに 5~15 分かかることがあります。進行状況を確認するには、次のコマンドを実行します。
gcloud compute instances tail-serial-port-output iso-copier \ --zone=$(gcloud config get-value compute/zone)
VM が起動スクリプトの実行を完了するまで待ちます。
until gcloud compute instances get-guest-attributes iso-copier \ --zone=$(gcloud config get-value compute/zone) \ --query-path=vm/ready > /dev/null 2>&1 do sleep 5 && echo waiting for VM to finish... done
VM をシャットダウンして削除します。
gcloud compute instances delete iso-copier \ --zone=$(gcloud config get-value compute/zone) \ --quiet
セカンダリ ディスクは
auto-delete=no
パラメータでマウントされているため削除されません。Cloud Shell で、前のセクションで作成したディスクからイメージを作成します。
gcloud compute images create $DISK_NAME \ --source-disk=$DISK_NAME \ --source-disk-zone=$(gcloud config get-value compute/zone)
ディスクを削除します。
gcloud compute disks delete $DISK_NAME \ --zone=$(gcloud config get-value compute/zone) \ --quiet
イメージを削除します。
gcloud compute images delete $DISK_NAME
カスタム イメージを作成する方法を確認する。
カスタム イメージへのアクセスを管理する方法を確認する。
Compute Engine での Windows ワークロードについて確認する。
ISO ファイルを準備する
ISO ファイルが HTTP 経由で一般公開されている場合は、あらかじめ ISO ファイルをダウンロードしておく必要はありません。ローカルの ISO ファイルを使用する場合は、ISO ファイルを Cloud Storage にアップロードします。
HTTP URL
ローカル ISO ファイル
ISO ファイルのコンテンツを含むディスクの作成
ISO ファイルのコンテンツを新しいディスクにコピーするには、一時的な VM を作成し、ディスクからイメージを作成します。
これでディスクを使用できるようになりました。同じゾーン内の 1 つ以上の VM インスタンスに読み取り専用モードでディスクを接続できます。
イメージを作成してゾーンとリージョン間でディスクを共有する
ISO ファイルのコンテンツを他のゾーンまたはリージョンで使用できるようにするには、Compute Engine イメージを作成します。
クリーンアップ
このプロセスを完了した後に費用が発生しないようにするには、作成したリソースを削除します。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-22 UTC。
-