Os suportes de instalação para aplicações Windows são frequentemente fornecidos como um ficheiro ISO, mas o Compute Engine não lhe permite expor um ficheiro ISO como uma unidade de DVD virtual a uma instância de VM.
Para aceder ao conteúdo do ficheiro ISO numa única VM do Windows, pode fazer qualquer uma das seguintes ações:
Copie o ficheiro ISO para a MV e monte-o localmente. Esta abordagem funciona bem se só precisar de aceder ao conteúdo do ficheiro ISO numa única instância de VM.
Crie um disco persistente a partir do ficheiro ISO e anexe o disco no modo de leitura a uma ou mais instâncias da VM. Esta abordagem funciona bem se várias VMs precisarem de aceder ao conteúdo do ficheiro ISO.
Este documento descreve como pode criar um disco persistente a partir do ficheiro ISO e anexar o disco no modo de leitura a uma ou mais VMs.
Antes de começar
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se 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
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- Set a default region and zone.
Prepare o ficheiro ISO
Se o ficheiro ISO estiver disponível publicamente através de HTTP, não precisa de transferir o ficheiro ISO primeiro. Para usar um ficheiro ISO local, pode carregar o ficheiro ISO para o Cloud Storage.
URL HTTP
Na Google Cloud consola, abra o Cloud Shell clicando no botão Ativar Cloud Shell
.
Crie uma variável de ambiente para o URL de transferência. O URL pode ser um URL HTTP ou HTTPS, mas tem de ser acessível anonimamente.
ISO_URL=https://example.com/big.iso
Ficheiro ISO local
Na Google Cloud consola, crie um contentor do Cloud Storage.
-
Consoante o tamanho do ficheiro ISO, o carregamento pode demorar vários minutos ou horas.
No navegador de armazenamento, navegue para 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 no botão Ativar Cloud Shell
.
Crie uma variável de ambiente para o URL de transferência. Substitua
URI
pelo URI que copiou.ISO_URL=URI
Crie um disco com o conteúdo do ficheiro ISO
Para copiar o conteúdo do ficheiro ISO para um novo disco, crie uma VM temporária e, em seguida, crie uma imagem a partir do disco:
No Cloud Shell, especifique o nome que quer atribuir ao novo disco:
DISK_NAME=iso
Crie um novo disco para o qual copiar o conteúdo dos ficheiros 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 ficheiro ISO exceder os 9 GB.
Crie um script de arranque para a VM temporária. O script de arranque realiza as seguintes ações:
- Formate o disco secundário com o sistema de ficheiros NTFS.
- Transfira o ficheiro ISO a partir do URL HTTP ou do Cloud Storage que especificou.
- Monte o ficheiro ISO e copie o respetivo 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 arranque e o disco que 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
O início da VM demora cerca de 2 minutos. Consoante o tamanho do ficheiro ISO, a operação de cópia do ficheiro pode demorar mais 5 a 15 minutos a ser concluída. 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 até que a VM termine a execução do script de arranque:
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
Encerre e elimine a VM:
gcloud compute instances delete iso-copier \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Tenha em atenção que o disco secundário não é eliminado porque foi montado com o parâmetro
auto-delete=no
.
O disco está agora pronto a ser usado. Pode anexar o disco no modo só de leitura a uma ou mais instâncias de VM na mesma zona.
Partilhe o disco entre zonas e regiões criando uma imagem
Para disponibilizar o conteúdo do ficheiro ISO noutras zonas ou regiões, crie uma imagem do Compute Engine:
No Cloud Shell, crie uma imagem a partir do disco que criou na secção anterior:
gcloud compute images create $DISK_NAME \ --source-disk=$DISK_NAME \ --source-disk-zone=$(gcloud config get-value compute/zone)
Limpar
Para evitar incorrer em custos adicionais após a conclusão deste processo, pode eliminar os recursos que criou:
Elimine o disco:
gcloud compute disks delete $DISK_NAME \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Elimine a imagem:
gcloud compute images delete $DISK_NAME
O que se segue?
Saiba como criar imagens personalizadas.
Saiba como gerir o acesso a imagens personalizadas.
Saiba mais sobre as cargas de trabalho do Windows no Compute Engine.
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-09-19 UTC.
-