I supporti di installazione per le applicazioni Windows vengono spesso forniti come file ISO, ma Compute Engine non ti consente di esporre un file ISO come unità DVD virtuale a un'istanza VM.
Per accedere ai contenuti del file ISO su una singola VM Windows, puoi svolgere una delle seguenti operazioni:
Copia il file ISO nella VM e montalo localmente. Questo approccio funziona bene se devi solo accedere ai contenuti del file ISO su una singola istanza VM.
Crea un Persistent Disk dal file ISO e collegalo in modalità di sola lettura a una o più istanze VM. Questo approccio funziona bene se più VM devono accedere ai contenuti del file ISO.
Questo documento descrive come creare un Persistent Disk dal file ISO e collegarlo in modalità di sola lettura a una o più VM.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
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.
Nella console Google Cloud, apri Cloud Shell facendo clic sul pulsante Attiva Cloud Shell .
Crea una variabile di ambiente per l'URL di download. L'URL può essere un URL HTTP o HTTPS, ma deve essere accessibile in modo anonimo.
ISO_URL=https://example.com/big.iso
Nella console Google Cloud, crea un bucket Cloud Storage.
-
A seconda delle dimensioni del file ISO, il caricamento può richiedere diversi minuti o ore.
Nel Browser di archiviazione, vai all'oggetto caricato.
Nella pagina Dettagli oggetto, copia l'URI dell'oggetto. L'URI inizia con
gs://
.Apri Cloud Shell facendo clic sul pulsante Attiva Cloud Shell.
Crea una variabile di ambiente per l'URL di download. Sostituisci
URI
con l'URI che hai copiato.ISO_URL=URI
Da Cloud Shell, specifica il nome da assegnare al nuovo disco:
DISK_NAME=iso
Crea un nuovo disco su cui copiare i contenuti dei file ISO:
gcloud compute disks create $DISK_NAME \ --size=10GB \ --zone=$(gcloud config get-value compute/zone)
Utilizza una dimensione del disco maggiore se il file ISO supera i 9 GB.
Crea uno script di avvio per la VM temporanea. Lo script di avvio esegue le seguenti azioni:
- Formatta il disco secondario con il file system NTFS.
- Scarica il file ISO dall'URL HTTP o Cloud Storage specificato.
- Monta il file ISO e copiane i contenuti sul disco secondario.
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
Crea una VM Windows Server 2019 che utilizzi lo script di avvio e il disco che hai creato in precedenza:
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
L'avvio della VM richiede circa 2 minuti. A seconda delle dimensioni del file ISO, potrebbero essere necessari altri 5-15 minuti per completare l'operazione di copia del file. Puoi osservare l'avanzamento eseguendo il seguente comando:
gcloud compute instances tail-serial-port-output iso-copier \ --zone=$(gcloud config get-value compute/zone)
Attendi che la VM finisca di eseguire lo script di avvio:
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
Arresta ed elimina la VM:
gcloud compute instances delete iso-copier \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Tieni presente che il disco secondario non viene eliminato perché è stato montato con il parametro
auto-delete=no
.Da Cloud Shell, crea un'immagine dal disco creato nella sezione precedente:
gcloud compute images create $DISK_NAME \ --source-disk=$DISK_NAME \ --source-disk-zone=$(gcloud config get-value compute/zone)
Elimina il disco:
gcloud compute disks delete $DISK_NAME \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Elimina l'immagine:
gcloud compute images delete $DISK_NAME
Scopri come creare immagini personalizzate.
Scopri come gestire l'accesso alle immagini personalizzate.
Scopri di più sui carichi di lavoro Windows su Compute Engine.
Prepara il file ISO
Se il file ISO è disponibile pubblicamente tramite HTTP, non è necessario scaricarlo prima. Per utilizzare un file ISO locale, puoi caricarlo su Cloud Storage.
URL HTTP
File ISO locale
Crea un disco contenente i contenuti del file ISO
Per copiare i contenuti del file ISO su un nuovo disco, crea una VM temporanea, quindi crea un'immagine dal disco:
Il disco è ora pronto per essere utilizzato. Puoi collegare il disco in modalità di sola lettura a una o più istanze VM all'interno della stessa zona.
Condividi il disco tra zone e regioni creando un'immagine
Per rendere disponibili i contenuti del file ISO in altre zone o regioni, crea un'immagine Compute Engine:
Esegui la pulizia
Per evitare di incorrere in ulteriori costi dopo aver completato questa procedura, puoi eliminare le risorse che hai creato:
Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-12-22 UTC.
-