Le support d'installation pour les applications Windows est souvent fourni sous forme de fichier ISO, mais Compute Engine ne permet pas d'exposer un fichier ISO en tant que lecteur DVD virtuel sur une instance de VM.
Pour accéder au contenu du fichier ISO sur une seule VM Windows, vous pouvez effectuer l'une des opérations suivantes :
Copiez le fichier ISO sur la VM et installez-le localement. Cette approche fonctionne bien si vous n'avez besoin d'accéder au contenu du fichier ISO que sur une seule instance de VM.
Créez un disque persistant à partir du fichier ISO et associez le disque en mode lecture seule à une ou plusieurs instances de VM. Cette approche fonctionne bien si plusieurs VM nécessitent d'accéder au contenu du fichier ISO.
Ce document explique comment créer un disque persistant à partir du fichier ISO et l'associer en mode lecture seule à une ou plusieurs VM.
Avant de commencer
- Si vous souhaitez utiliser les exemples de ligne de commande de ce guide, procédez comme suit :
- Installez la dernière version de Google Cloud CLI ou appliquez la mise à jour correspondante.
- Définissez une région et une zone par défaut.
Préparer le fichier ISO
Si le fichier ISO est accessible au public via HTTP, vous n'avez pas besoin de le télécharger au préalable. Pour utiliser un fichier ISO local, vous pouvez l'importer dans Cloud Storage.
URL HTTP
Dans Google Cloud Console, ouvrez Cloud Shell en cliquant sur le bouton Activer Cloud Shell .
Accédez à Google Cloud Console.
Créez une variable d'environnement pour l'URL de téléchargement. Vous pouvez utiliser une URL HTTP ou HTTPS, pourvu qu'elle soit accessible de manière anonyme.
ISO_URL=https://example.com/big.iso
Fichier ISO local
Dans la console Google Cloud, créez un bucket Cloud Storage.
Accédez à Google Cloud Console.
Importez le fichier ISO à l'aide de la console Google Cloud ou de
gsutil
.En fonction de la taille du fichier ISO, l'importation peut prendre plusieurs minutes ou plusieurs heures.
Dans le navigateur de stockage, accédez à l'objet importé.
Sur la page Détails de l'objet, copiez l'URI de l'objet. L'URI commence par
gs://
.Ouvrez Cloud Shell en cliquant sur le bouton Activer Cloud Shell .
Accédez à Google Cloud Console.
Créez une variable d'environnement pour l'URL de téléchargement. Remplacez
URI
par l'URI que vous avez copié.ISO_URL=URI
Créer un disque avec le contenu du fichier ISO
Pour copier le contenu du fichier ISO sur un nouveau disque, créez une VM temporaire, puis créez une image à partir du disque :
Dans Cloud Shell, spécifiez le nom que vous souhaitez attribuer au nouveau disque :
DISK_NAME=iso
Créez un disque sur lequel copier le contenu des fichiers ISO :
gcloud compute disks create $DISK_NAME \ --size=10GB \ --zone=$(gcloud config get-value compute/zone)
Utilisez une taille de disque plus importante si votre fichier ISO dépasse 9 Go.
Créez un script de démarrage pour la VM temporaire. Le script de démarrage effectue les actions suivantes :
- Formatage du disque secondaire avec le système de fichiers NTFS.
- Téléchargement du fichier ISO à partir de l'URL HTTP ou Cloud Storage que vous avez spécifiée.
- Installation du fichier ISO et copie de son contenu sur le disque secondaire.
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:')) { & gsutil 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
Création d'une VM qui exécute Windows Server 2019 Core et associez le disque secondaire :
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
Le démarrage de la VM prend environ deux minutes. Selon la taille du fichier ISO, l'opération de copie du fichier peut prendre entre 5 et 15 minutes. Vous pouvez suivre la progression en exécutant la commande suivante :
gcloud compute instances tail-serial-port-output iso-copier \ --zone=$(gcloud config get-value compute/zone)
Attendez que la VM ait terminé d'exécuter le script de démarrage :
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
Arrêtez et supprimez la VM :
gcloud compute instances delete iso-copier \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Notez que le disque secondaire n'est pas supprimé, car il a été installé avec le paramètre
auto-delete=no
.
Le disque est maintenant prêt à être utilisé. Vous pouvez associer le disque en mode lecture seule à une ou plusieurs instances de VM dans la même zone.
Partager le disque entre plusieurs zones et régions en créant une image
Pour rendre le contenu du fichier ISO disponible dans d'autres zones ou régions, créez une image Compute Engine :
Dans Cloud Shell, créez une image à partir du disque que vous avez créé dans la section précédente :
gcloud compute images create $DISK_NAME \ --source-disk=$DISK_NAME \ --source-disk-zone=$(gcloud config get-value compute/zone)
Effectuer un nettoyage
Pour éviter des frais supplémentaires une fois ce processus terminé, vous pouvez supprimer les ressources que vous avez créées :
Supprimez le disque :
gcloud compute disks delete $DISK_NAME \ --zone=$(gcloud config get-value compute/zone) \ --quiet
Supprimez l'image :
gcloud compute images delete $DISK_NAME
Étape suivante
Découvrez comment créer, supprimer et rendre obsolètes des images personnalisées.
Découvrez comment gérer l'accès aux images personnalisées.
Obtenez plus d'informations sur les charges de travail Windows sur Compute Engine.