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 ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:
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.
Dans la console Google Cloud, ouvrez Cloud Shell en cliquant sur le bouton Activer Cloud Shell .
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
Dans la console Google Cloud, créez un bucket Cloud Storage.
-
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 .
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
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:')) { & 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
Créez une VM Windows Server 2019 qui utilise le script de démarrage et le disque que vous avez créés précédemment:
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
.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)
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
Découvrez comment créer 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.
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
Fichier ISO local
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 :
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 :
Effectuer un nettoyage
Pour éviter des frais supplémentaires une fois ce processus terminé, vous pouvez supprimer les ressources que vous avez créées :
Étape suivante
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/22 (UTC).
-