Los medios de instalación para aplicaciones de Windows a menudo se proporcionan como un archivo ISO, pero Compute Engine no permite exponer un archivo ISO como una unidad de DVD virtual a una instancia de VM.
Para acceder al contenido del archivo ISO en una única máquina virtual Windows, puede realizar cualquiera de las siguientes acciones:
Copie el archivo ISO a la VM y móntelo localmente . Este enfoque funciona bien si solo necesita acceder al contenido del archivo ISO en una única instancia de VM.
Cree un disco persistente a partir del archivo ISO y adjunte el disco en modo de solo lectura a una o más instancias de VM. Este enfoque funciona bien si varias máquinas virtuales necesitan acceder al contenido del archivo ISO.
Este documento describe cómo puede crear un disco persistente a partir del archivo ISO y conectar el disco en modo de solo lectura a una o más máquinas virtuales.
Antes de comenzar
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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.
En la consola de Google Cloud, abra Cloud Shell haciendo clic en Activar Cloud Shell
botón.
Cree una variable de entorno para la URL de descarga. La URL puede ser una URL HTTP o HTTPS, pero se debe poder acceder a ella de forma anónima.
ISO_URL=https://example.com/big.iso
En la consola de Google Cloud, crea un depósito de Cloud Storage .
Dependiendo del tamaño del archivo ISO, la carga puede tardar varios minutos u horas.
En el navegador de almacenamiento , navegue hasta el objeto cargado.
En la página de detalles del objeto , copie el URI del objeto. El URI comienza con
gs://
.Abra Cloud Shell haciendo clic en Activar Cloud Shell
botón.
Cree una variable de entorno para la URL de descarga. Reemplace
URI
con el URI que copió.ISO_URL=URI
Desde Cloud Shell, especifique el nombre que desea asignar al nuevo disco:
DISK_NAME=iso
Cree un nuevo disco al que copiar el contenido de los archivos ISO:
gcloud compute disks create $DISK_NAME \ --size=10GB \ --zone=$(gcloud config get-value compute/zone)
Utilice un tamaño de disco mayor si su archivo ISO supera los 9 GB.
Cree un script de inicio para la VM temporal. El script de inicio realiza las siguientes acciones:
- Formatee el disco secundario con el sistema de archivos NTFS.
- Descargue el archivo ISO desde la URL HTTP o de almacenamiento en la nube que especificó.
- Monte el archivo ISO y copie su contenido al disco secundario.
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
Cree una máquina virtual Windows Server 2019 que utilice el script de inicio y el disco que creó 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
La máquina virtual tarda unos 2 minutos en iniciarse. Dependiendo del tamaño del archivo ISO, la operación de copia del archivo puede tardar entre 5 y 15 minutos en completarse. Puede observar el progreso ejecutando el siguiente comando:
gcloud compute instances tail-serial-port-output iso-copier \ --zone=$(gcloud config get-value compute/zone)
Espere a que la VM termine de ejecutar el script de inicio:
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
Apague y elimine la VM:
gcloud compute instances delete iso-copier \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Observe que el disco secundario no se elimina porque se montó con el parámetro
auto-delete=no
.Desde Cloud Shell, cree una imagen del disco que creó en la sección anterior:
gcloud compute images create $DISK_NAME \ --source-disk=$DISK_NAME \ --source-disk-zone=$(gcloud config get-value compute/zone)
Eliminar el disco:
gcloud compute disks delete $DISK_NAME \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Eliminar la imagen:
gcloud compute images delete $DISK_NAME
Aprenda a crear imágenes personalizadas .
Aprenda a administrar el acceso a imágenes personalizadas .
Obtenga más información sobre las cargas de trabajo de Windows en Compute Engine .
Prepara el archivo ISO
Si el archivo ISO está disponible públicamente a través de HTTP, no es necesario descargarlo primero. Para utilizar un archivo ISO local, puede cargar el archivo ISO en Cloud Storage.
URL HTTP
Archivo ISO local
Cree un disco que contenga el contenido del archivo ISO
Para copiar el contenido del archivo ISO a un disco nuevo, cree una máquina virtual temporal y luego cree una imagen desde el disco:
El disco ahora está listo para ser utilizado. Puede conectar el disco en modo de solo lectura a una o más instancias de VM dentro de la misma zona.
Comparta el disco entre zonas y regiones creando una imagen
Para que el contenido del archivo ISO esté disponible en otras zonas o regiones, crea una imagen de Compute Engine:
Limpiar
Para evitar incurrir en costos adicionales después de haber completado este proceso, puede eliminar los recursos que creó:
¿Qué sigue?
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-04-17 (UTC).
-