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. Ti consigliamo di adottare questo approccio se devi accedere solo ai contenuti del file ISO su una singola istanza VM.
Crea un disco permanente dal file ISO e collegalo in modalità di sola lettura a una o più istanze VM. Ti consigliamo di adottare questo approccio se più VM devono accedere ai contenuti del file ISO.
Questo documento descrive come creare un disco permanente 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 verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa alla modalità di utilizzo degli esempi in questa pagina:
Console
Quando utilizzi la Google Cloud console per accedere a Google Cloud servizi e API, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
- Imposta una regione e una zona predefinite.
Prepara il file ISO
Se il file ISO è disponibile pubblicamente tramite HTTP, non devi scaricarlo prima. Per utilizzare un file ISO locale, puoi caricarlo su Cloud Storage.
URL HTTP
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
File ISO locale
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 storage, vai all'oggetto caricato.
Nella pagina Dettagli oggetto, copia l'URI dell'oggetto. L'URI inizia con
gs://.Per aprire Cloud Shell, fai clic sul pulsante Attiva Cloud Shell
.
Crea una variabile di ambiente per l'URL di download. Sostituisci
URIcon l'URI che hai copiato.ISO_URL=URI
Crea un disco contenente i contenuti del file ISO
Per copiare i contenuti del file ISO su un nuovo disco, crea prima una VM temporanea e successivamente un'immagine dal disco:
Da Cloud Shell, specifica il nome da assegnare al nuovo disco:
DISK_NAME=isoCrea 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)
Se il file ISO supera i 9 GB, utilizza una dimensione del disco maggiore.
Crea uno script di avvio per la VM temporanea. Lo script di avvio esegue queste 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 EOFCrea 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_onlyL'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 questo 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... doneArresta ed elimina la VM:
gcloud compute instances delete iso-copier \ --zone=$(gcloud config get-value compute/zone) \ --quietTieni presente che il disco secondario non può essere eliminato perché è stato montato con il parametro
auto-delete=no.
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:
Da Cloud Shell, genera 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)
Esegui la pulizia
Per evitare di incorrere in ulteriori costi dopo aver completato questa procedura, puoi eliminare le risorse che hai creato:
Elimina il disco:
gcloud compute disks delete $DISK_NAME \ --zone=$(gcloud config get-value compute/zone) \ --quietElimina l'immagine:
gcloud compute images delete $DISK_NAME
Passaggi successivi
Scopri come creare immagini personalizzate.
Scopri come gestire l'accesso alle immagini personalizzate.
Scopri di più sui workload Windows su Compute Engine.