A mídia de instalação para aplicativos do Windows geralmente é fornecida como um arquivo ISO, mas o Compute Engine não permite expor um arquivo ISO como uma unidade de DVD virtual para uma instância de VM.
Para acessar o conteúdo do arquivo ISO em uma única VM do Windows, você pode fazer o seguinte:
Copie o arquivo ISO para a VM e monte-o localmente . Essa abordagem funciona bem se você precisar acessar apenas o conteúdo do arquivo ISO em uma única instância de VM.
Crie um disco permanente a partir do arquivo ISO e anexe o disco em modo somente leitura a uma ou mais instâncias de VM. Essa abordagem funciona bem se várias VMs precisarem de acesso ao conteúdo do arquivo ISO.
Este documento descreve como você pode criar um disco permanente a partir do arquivo ISO e anexar o disco em modo somente leitura a uma ou mais VMs.
Antes de começar
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:
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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
No console do Google Cloud, abra o Cloud Shell clicando em Ativar Cloud Shell
botão.
Crie uma variável de ambiente para o URL de download. A URL pode ser uma URL HTTP ou HTTPS, mas deve ser acessível anonimamente.
ISO_URL=https://example.com/big.iso
No console do Google Cloud, crie um bucket do Cloud Storage .
Dependendo do tamanho do arquivo ISO, o upload pode levar vários minutos ou horas.
No navegador de armazenamento , navegue até o objeto carregado.
Na página Detalhes do objeto , copie o URI do objeto. O URI começa com
gs://
.Abra o Cloud Shell clicando em Ativar Cloud Shell
botão.
Crie uma variável de ambiente para o URL de download. Substitua
URI
pelo URI que você copiou.ISO_URL=URI
No Cloud Shell, especifique o nome que você quer atribuir ao novo disco:
DISK_NAME=iso
Crie um novo disco para copiar o conteúdo dos arquivos ISO:
gcloud compute disks create $DISK_NAME \ --size=10GB \ --zone=$(gcloud config get-value compute/zone)
Use um tamanho de disco maior se o seu arquivo ISO exceder 9 GB.
Crie um script de inicialização para a VM temporária. O script de inicialização executa as seguintes ações:
- Formate o disco secundário com o sistema de arquivos NTFS.
- Baixe o arquivo ISO do URL HTTP ou Cloud Storage que você especificou.
- Monte o arquivo ISO e copie seu conteúdo para o disco secundário.
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
Crie uma VM do Windows Server 2019 que use o script de inicialização e o disco que você criou anteriormente:
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
A VM leva cerca de 2 minutos para iniciar. Dependendo do tamanho do arquivo ISO, pode levar de 5 a 15 minutos para que a operação de cópia do arquivo seja concluída. Você pode observar o progresso executando o seguinte comando:
gcloud compute instances tail-serial-port-output iso-copier \ --zone=$(gcloud config get-value compute/zone)
Aguarde a VM terminar de executar o script de inicialização:
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
Desligue e exclua a VM:
gcloud compute instances delete iso-copier \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Observe que o disco secundário não foi excluído porque foi montado com o parâmetro
auto-delete=no
.No Cloud Shell, crie uma imagem do disco criado na seção anterior:
gcloud compute images create $DISK_NAME \ --source-disk=$DISK_NAME \ --source-disk-zone=$(gcloud config get-value compute/zone)
Exclua o disco:
gcloud compute disks delete $DISK_NAME \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Exclua a imagem:
gcloud compute images delete $DISK_NAME
Aprenda como criar imagens personalizadas .
Saiba como gerenciar o acesso a imagens personalizadas .
Saiba mais sobre as cargas de trabalho do Windows no Compute Engine .
Prepare o arquivo ISO
Se o arquivo ISO estiver disponível publicamente via HTTP, você não precisará fazer download do arquivo ISO primeiro. Para usar um arquivo ISO local, faça upload do arquivo ISO para o Cloud Storage.
URL HTTP
Arquivo ISO local
Crie um disco contendo o conteúdo do arquivo ISO
Para copiar o conteúdo do arquivo ISO para um novo disco, crie uma VM temporária e, em seguida, crie uma imagem do disco:
O disco agora está pronto para ser usado. Você pode anexar o disco no modo somente leitura a uma ou mais instâncias de VM na mesma zona.
Compartilhe o disco entre zonas e regiões criando uma imagem
Para disponibilizar o conteúdo do arquivo ISO em outras zonas ou regiões, crie uma imagem do Compute Engine:
Limpar
Para evitar incorrer em custos adicionais após concluir esse processo, você pode excluir os recursos que criou:
O que vem a seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-04-21 UTC.
-