Si vous possédez des disques virtuels dans votre environnement sur site avec les logiciels et les configurations nécessaires (parfois appelés disques de référence ou images de référence), vous pouvez gagner du temps en important ces disques virtuels dans Compute Engine et en utilisant l'image obtenue pour créer des machines virtuelles. L'outil d'importation est compatible avec la plupart des formats de fichiers de disque virtuel, y compris VMDK et VHD.
Si vous avez exporté votre disque à partir de Compute Engine, vous pouvez créer des images à partir du disque.
Pour plus d'informations sur la création d'un système automatisé de migration de plusieurs machines virtuelles (VM), consultez la section Migrer des VM vers Compute Engine.
Avant de commencer
- Si un règlement relatif aux images de confiance est défini pour le projet dans lequel vous importez l'image, ajoutez
projects/compute-image-import
etprojects/compute-image-tools
à la liste des éditeurs autorisés. - Pour savoir comment satisfaire les exigences avant d'importer des images, consultez la section Conditions préalables à l'importation et à l'exportation d'images de VM.
-
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 comme suit :
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Console
Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Définissez une région et une zone par défaut.
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Systèmes d'exploitation compatibles
Vous pouvez importer des disques amorçables et non amorçables. Pour que vos disques virtuels puissent démarrer sur Compute Engine, ils doivent exécuter l'un des systèmes d'exploitation compatibles.
Compatibilité avec BYOL et BYOS
Si vous préférez utiliser votre propre licence ou abonnement logiciel, vous pouvez importer vos disques virtuels avec leurs licences. Pour en savoir plus sur les systèmes d'exploitation compatibles avec BYOL ou BYOS, consultez la page Détails des systèmes d'exploitation.
Vous pouvez importer des images avec des licences existantes à l'aide de la commande gcloud compute instances import
avec l'option --byol
.
Limites
Cette fonctionnalité présente les limites générales suivantes :
Si vous importez un disque virtuel exécutant RHEL, le modèle BYOL (Bring Your Own License) est disponible uniquement si le package python-boto est installé sur le disque virtuel avant l'importation.
Les systèmes d'exploitation sur des disques virtuels doivent être compatibles avec ACPI.
Cette fonctionnalité n'est pas disponible pour les projets protégés par VPC Service Controls. Pour ces environnements, consultez la section Importer manuellement des disques de démarrage.
Vous ne pouvez pas importer d'images Arm à l'aide de l'outil d'importation d'image. Pour importer des images Arm, suivez les instructions détaillées comme décrit dans la section Importer manuellement des disques de démarrage.
Compute Engine ne permet pas d'importer des disques chiffrés par logiciel, car ils ne peuvent pas être lus sans clé. Plus précisément, vous ne pouvez pas importer d'images Windows 10 et versions ultérieures qui utilisent le chiffrement de lecteur BitLocker.
Cette fonctionnalité présente les limites suivantes sous Linux :
Les disques virtuels Linux doivent utiliser
grub
comme bootloader.Les disques virtuels Linux doivent répondre aux mêmes exigences que les images personnalisées, y compris la compatibilité avec les appareils de contrôleur de stockage Virtio-SCSI.
Cette fonctionnalité présente les limites suivantes sous Windows :
Lorsqu'ils sont installés sur des disques virtuels Windows, les logiciels présents sur la liste d'autorisation d'applications, tels que CB Protection de l'éditeur Carbon Black, peuvent entraîner l'échec du processus d'importation. Vous devrez peut-être désinstaller les logiciels de ce type avant l'importation.
Sur les VM Windows, l'adaptateur de rebouclage Microsoft KM-TEST empêche l'accès réseau au serveur de métadonnées. Vous devez le désactiver ou le supprimer avant l'importation.
Autorisations
Pour garantir une expérience optimale lors de l'importation des images, assurez-vous d'avoir attribué les rôles IAM requis à votre compte, au compte de service Cloud Build et au compte de service Compute Engine. Pour en savoir plus, consultez la section Attribuer les rôles IAM requis.
Vérifier la compatibilité
Avant de tenter d'importer le disque pour votre VM, téléchargez et exécutez l'outil de vérification préalable à l'intérieur de votre VM. Cet outil de vérification préalable recherche tous les problèmes de compatibilité susceptibles de provoquer l'échec du processus d'importation ou un fonctionnement incorrect du disque sur Compute Engine.
Importer des disques virtuels
Vous pouvez importer vos disques virtuels à l'aide de la console Google Cloud, de Google Cloud CLI, ou de l'API Cloud Build.
Importer un disque virtuel de démarrage
Pour les disques de démarrage, il n'est pas nécessaire de spécifier le système d'exploitation, car l'outil d'importation le détecte automatiquement afin de déterminer les pilotes et les packages requis. Toutefois, si vous devez remplacer le système d'exploitation détecté, vous pouvez spécifier l'option --os
ou le paramètre -os
. Pour obtenir la liste des valeurs acceptées, consultez la section sur l'option --os
.
Console
- Dans Google Cloud Console, importez le fichier de disque virtuel sur Cloud Storage.
Accédez à la page Créer une image.
Indiquez un Nom pour votre image.
Sous Source, sélectionnez Disque virtuel (VMDK, VHD,…).
Recherchez ou saisissez manuellement l'emplacement de stockage du fichier Cloud Storage.
Sélectionnez le système d'exploitation disponible sur le disque importé. Vous pouvez également apporter les modifications suivantes :
Vous pouvez choisir d'installer des packages invités. Nous vous recommandons d'installer l'environnement invité. Pour plus d'informations sur l'environnement invité, consultez la section Environnement invité.
Pour les systèmes d'exploitation Windows ou Red Hat Enterprise Linux (RHEL), vous pouvez également choisir une option de licence. Vous pouvez autoriser Compute Engine à fournir une licence ou apporter votre propre licence. Pour plus d'informations sur la manière d'utiliser votre propre licence sous Windows, consultez la pageBring Your Own License, utilisation de votre propre licence.
(Facultatif) Spécifiez des propriétés supplémentaires pour votre image. Par exemple, vous pouvez organiser cette image dans le cadre d'une famille d'images.
Cliquez sur Créer pour importer l'image.
gcloud
Exécutez la commande gcloud compute images import
pour créer une image Compute Engine de démarrage. Même si Compute Engine peut amorcer la plupart des images de disque de démarrage, la commande import
garantit que le disque dispose des pilotes requis et des derniers packages de l'environnement invité, qui sont nécessaires pour démarrer une instance et s'y connecter à l'aide de SSH ou de RDP.
Vous pouvez importer des fichiers de disque virtuel à partir d'un bucket Cloud Storage ou de votre poste de travail local.
Si vous importez le fichier de disque virtuel depuis votre poste de travail, l'outil d'importation va transférer automatiquement le fichier vers un bucket Cloud Storage.
Si vous préférez, vous pouvez transférer vous-même le fichier de disque virtuel dans Cloud Storage avant de lancer le processus d'importation. En revanche, vous devez transférer le fichier vers un bucket Cloud Storage du même projet que celui utilisé pour le processus d'importation.
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE
Remplacez l'élément suivant :
IMAGE_NAME
: nom de votre image de destination.SOURCE_FILE
: votre fichier de disque virtuel. Ce fichier peut être un fichier local ou un fichier stocké dans Cloud Storage. Si votre disque virtuel est un fichier local, vous pouvez utiliser un chemin d'accès absolu ou relatif. Si votre fichier de disque virtuel est déjà stocké dans Cloud Storage, celui-ci doit exister dans un bucket Cloud Storage du même projet que celui utilisé pour le processus d'importation. Vous devez spécifier le chemin complet du fichier au formatgs://BUCKET_NAME/OBJECT_NAME
.
Si vous importez une image avec une licence existante, spécifiez l'option --byol
comme suit:
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE --byol
Pour découvrir comment importer des images dans Google Cloud avec des licences existantes, consultez la page Utiliser vos propres licences (Bring your own license).
Si vous spécifiez un fichier local, l'opération de transfert peut prendre un certain temps, en fonction de la taille de votre disque virtuel et de la vitesse de votre connexion réseau. L'opération d'importation peut durer plusieurs dizaines de minutes en fonction de la taille du disque.
Exemple
L'exemple suivant importe un disque virtuel nommé my_server.vmdk
et stocké dans gs://your_gcs_bucket
.
gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_server.vmdk
Paramètres facultatifs
Par défaut, les packages d'environnement invité sont ajoutés à toutes les images de disque de démarrage importées. Si vous ne souhaitez pas utiliser ces packages, ajoutez l'option --no-guest-environment
à votre commande d'importation.
REST
Ajoutez le disque virtuel dans Cloud Storage.
Envoyez une requête
POST
à l'API Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Remplacez l'élément suivant :
PROJECT_ID
: ID du projet dans lequel vous souhaitez importer l'image.IMAGE_NAME
: nom de l'image à importer.SOURCE_FILE
: URI de l'image dans Cloud Storage, par exemplegs://my-bucket/my-image.vmdk
.
Pour connaître les autres valeurs
args
que vous pouvez spécifier, consultez la section des options facultatives de la page GitHub dédiée à l'importation d'images de VM.Exemple de réponse
L'exemple de réponse suivant ressemble au résultat renvoyé :
{ "name": "operations/build/myproject-12345/operation-1578608233418", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": "3a2055bc-ccbd-4101-9434-d376b88b8940", "status": "QUEUED", "createTime": "2019-09-20T15:55:29.353258929Z", "steps": [ { "name": "gcr.io/compute-image-import/gce_vm_image_import:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-timeout=7000s", "-image_name=my-image", "-client_id=api", "-data-disk", "-source_file=gs://my-bucket/my-image.vmdk" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456" } }
Vous pouvez surveiller votre compilation de deux manières différentes :
- Exécutez une requête projects.builds.get en utilisant la valeur
build-id
renvoyée. - Examinez les journaux hébergés à l'adresse
logUrl
fournie.
Importer et ajouter une licence à un disque virtuel
Pour ajouter une licence lorsque vous importez une image, utilisez la commande gcloud compute
images import
suivante.
gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE --os=OS
Remplacez les éléments suivants :
IMAGE_NAME
: nom de l'image à créer.SOURCE_FILE
: fichier local ou URI Cloud Storage du disque virtuel à importer.OS
: OS de l'image disque à importer. La licence de l'OS est déduite de la valeur de cette option. Il n'y a pas d'option explicite pour fournir des informations de licence lors de l'importation. Pour obtenir la liste des valeurs acceptées, consultez la section Option--os
.
Pour en savoir plus sur l'affichage et l'ajout de licences, consultez la page Afficher et ajouter des licences.
Importer un disque virtuel non amorçable
Console
- Dans Google Cloud Console, importez le fichier de disque virtuel sur Cloud Storage.
Accédez à la page Créer une image.
Indiquez un Nom pour votre image.
Sous Source, sélectionnez Disque virtuel (VMDK, VHD,…).
Recherchez ou saisissez manuellement l'emplacement de stockage du fichier Cloud Storage.
Sous Système d'exploitation, sélectionnez Aucun système d'exploitation. Données uniquement.
(Facultatif) Spécifiez des propriétés supplémentaires pour votre image. Par exemple, vous pouvez organiser cette image dans le cadre d'une famille d'images.
Cliquez sur Créer pour importer l'image.
gcloud
Vous pouvez utiliser la commande gcloud compute images import
pour créer une image Compute Engine non amorçable. Si aucun système d'exploitation amorçable n'est installé sur votre disque virtuel, spécifiez l'option --data-disk
. Vous allez ainsi ignorer l'étape d'installation des pilotes et des packages de l'environnement invité pour rendre l'image amorçable sur Compute Engine.
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --data-disk
Remplacez l'élément suivant :
IMAGE_NAME
: nom de votre image de destination.SOURCE_FILE
: votre fichier de disque virtuel. Ce fichier peut être un fichier local ou un fichier stocké dans Cloud Storage. Si votre disque virtuel est un fichier local, vous pouvez utiliser un chemin d'accès absolu ou relatif. Si votre fichier de disque virtuel est déjà stocké dans Cloud Storage, celui-ci doit exister dans un bucket Cloud Storage du même projet que celui utilisé pour le processus d'importation. Vous devez spécifier le chemin complet du fichier au formatgs://BUCKET_NAME/OBJECT_NAME
.
Exemple 1 : Importer un disque virtuel non amorçable à partir de Cloud Storage
L'exemple suivant importe un disque virtuel nommé my_disk.vmdk
stocké dans gs://your_gcs_bucket
.
gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_disk.vmdk --data-disk
Exemple 2 : Importez un fichier VMDK volumineux en spécifiant la valeur du délai avant expiration
La valeur par défaut du délai avant expiration pour le processus d'importation est de deux heures. L'importation des fichiers VMDK volumineux peut prendre jusqu'à 24 heures. Si vous ne spécifiez pas l'option --timeout
lorsque vous importez des fichiers de cette taille, le processus échoue au bout de deux heures.
L'exemple suivant importe un disque virtuel nommé my_disk.vmdk
et stocké dans gs://your_gcs_bucket
. La valeur du délai avant expiration pour cette importation est de 24 heures.
gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_disk.vmdk --data-disk --timeout=24h
REST
Ajoutez le disque virtuel dans Cloud Storage.
Envoyez une requête
POST
à l'API Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-timeout=7000s", "-client_id=api", "-data_disk" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Remplacez les valeurs
args
suivantes :PROJECT_ID
: ID du projet dans lequel vous souhaitez importer l'image.IMAGE_NAME
: nom de l'image à importer.SOURCE_FILE
: URI de l'image dans Cloud Storage, par exemplegs://my-bucket/my-image.vmdk
.
Importer des disques à l'aide de réseaux n'autorisant pas les adresses IP externes
Pour importer des disques virtuels à l'aide d'un réseau qui n'autorise pas les adresses IP externes, procédez comme suit :
Ajoutez le disque virtuel dans Cloud Storage.
Le processus d'importation d'image nécessite que des gestionnaires de packages soient installés sur le système d'exploitation du disque virtuel. Ces gestionnaires de packages peuvent avoir besoin d'envoyer des requêtes à des dépôts de packages en dehors de Google Cloud. Pour autoriser l'accès à ces mises à jour, vous devez configurer Cloud NAT. Pour en savoir plus, consultez la page Créer une configuration NAT à l'aide de Cloud Router.
Configurez l'accès privé à Google. Pour plus d'informations, consultez la page Configurer l'accès privé à Google.
Importez le disque virtuel à l'aide de la CLI Google Cloud ou de REST.
Lorsque vous importez un disque virtuel, des VM temporaires sont créées dans votre projet. Pour vous assurer que ces VM temporaires ne se voient pas attribuer d'adresses IP externes, vous devez spécifier une option ou un argument supplémentaire.
Pour en savoir plus, cliquez sur les onglets suivants :
gcloud
Exécutez la commande gcloud compute images import
avec l'option --no-address
pour importer votre disque virtuel.
gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE \ --zone=ZONE \ --no-address
Remplacez l'élément suivant :
IMAGE_NAME
: nom de l'image disque que vous souhaitez créer.SOURCE_FILE
: votre fichier de disque virtuel. Il peut s'agir d'un fichier local ou d'un fichier stocké dans Cloud Storage. Si votre disque virtuel est un fichier local, vous pouvez utiliser un chemin d'accès absolu ou relatif. Si votre fichier de disque virtuel est déjà stocké dans Cloud Storage, celui-ci doit exister dans un bucket Cloud Storage du même projet que celui utilisé pour le processus d'importation. Vous devez spécifier le chemin complet du fichier au formatgs://BUCKET_NAME/OBJECT_NAME
.ZONE
: zone dans laquelle créer l'instance. Si vous ne renseignez pas ce champ, la zone par défaut du projet est utilisée.
REST
Envoyez une requête POST
à l'API Cloud Build et spécifiez l'argument -no-external-ip
.
POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-zone=ZONE", "-no_external_ip", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Remplacez l'élément suivant :
PROJECT_ID
: ID du projet dans lequel vous souhaitez importer l'image.IMAGE_NAME
: nom de l'image à importer.SOURCE_FILE
: URI de l'image dans Cloud Storage. Exemple :gs://my-bucket/my-image.vmdk
pour la commandegcloud compute images import
.ZONE
: zone dans laquelle créer l'instance. Si vous ne renseignez pas ce champ, la zone par défaut du projet est utilisée.
Importer un disque virtuel avec un bootloader UEFI
Pour la plupart des disques virtuels, Compute Engine peut détecter et importer correctement les disques avec un bootloader UEFI, sans qu'une option supplémentaire ne soit nécessaire.
Toutefois, dans les scénarios suivants, vous devrez peut-être forcer le démarrage UEFI lors de l'importation.
- Si le processus d'importation d'image ne parvient pas à détecter le bootloader UEFI lors de l'importation.
Si votre disque est configuré en double amorçage et qu'il présente l'une des combinaisons suivantes : MBR hybride + UEFI, ou MBR protecteur + UEFI. Pour les disques configurés en double amorçage, l'importation peut être définie par défaut sur le démarrage non-UEFI.
gcloud
Vous pouvez forcer l'importation à utiliser le démarrage UEFI à l'aide de la commande gcloud compute images import
.
gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE \ --guest-os-features=UEFI_COMPATIBLE
Remplacez les éléments suivants :
IMAGE_NAME
: nom de l'image à importer.SOURCE_FILE
: URI de l'image dans Cloud Storage, par exemplegs://my-bucket/my-image.vmdk
.
Exemple
L'exemple suivant importe un disque virtuel nommé my-disk.vmdk
et stocké dans gs://my-gcs-bucket/
, puis force l'utilisation du démarrage UEFI.
gcloud compute images import my-imported-image \ --source-file gs://my-gcs-bucket/my-disk.vmdk \ --guest-os-features=UEFI_COMPATIBLE
REST
Pour forcer une importation à utiliser le démarrage UEFI, vous pouvez utiliser l'API Cloud Build et spécifier l'argument -uefi_compatible
. Pour ce faire, procédez comme suit :
Ajoutez le disque virtuel dans Cloud Storage.
Envoyez une requête
POST
à l'API Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-uefi_compatible", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Remplacez l'élément suivant :
PROJECT_ID
: ID du projet dans lequel vous souhaitez importer l'image.IMAGE_NAME
: nom de l'image à importer.SOURCE_FILE
: URI de l'image dans Cloud Storage, par exemplegs://my-bucket/my-image.vmdk
.
Importer un disque virtuel à l'aide d'un VPC partagé
Avant d'importer un disque virtuel utilisant un VPC partagé, vous devez ajouter le rôle compute.networkUser
au compte de service Cloud Build.
Pour plus d'informations, consultez la section Attribuer les rôles requis au compte de service Cloud Build.
gcloud
Utilisez la commande gcloud compute images import
pour importer votre disque virtuel.
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --project SERVICE_PROJECT_ID \ --zone ZONE \ --network NETWORK \ --subnet SUBNET
Remplacez l'élément suivant :
IMAGE_NAME
: nom de l'image à importer.SOURCE_FILE
: votre fichier de disque virtuel. Il peut s'agir d'un fichier local ou d'un fichier stocké dans Cloud Storage. Si votre disque virtuel est un fichier local, vous pouvez utiliser un chemin d'accès absolu ou relatif. Si votre fichier de disque virtuel est déjà stocké dans Cloud Storage, celui-ci doit exister dans un bucket Cloud Storage du même projet que celui utilisé pour le processus d'importation. Vous devez spécifier le chemin complet du fichier au formatgs://BUCKET_NAME/OBJECT_NAME
.SERVICE_PROJECT_ID
: ID du projet dans lequel vous souhaitez importer l'image.ZONE
: zone dans laquelle vous souhaitez importer l'image. Cette zone doit correspondre à la région du sous-réseau. Par exemple, siSUBNET
est défini surus-west1
, la zone d'importation doit être l'une des suivantes :us-west1-a
,us-west1-b
ouus-west1-c
.NETWORK
: chemin d'accès complet à un réseau VPC partagé. Exemple :projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
.SUBNET
: chemin d'accès complet à un sous-réseau VPC partagé (par exemple,projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
).Exemple de commande
gcloud compute images import example-image \ --source-file gs://source-bucket/source-file.vmdk \ --project my-image-project \ --zone us-west1-c \ --network projects/my-vpc-project/global/networks/my-shared-vpc \ --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-shared-subnet
REST
Ajoutez le disque virtuel dans Cloud Storage.
Envoyez une requête
POST
à l'API Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-zone=ZONE", "-network=NETWORK", "-subnet=SUBNET", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Remplacez les valeurs
args
suivantes :SERVICE_PROJECT_ID
: ID du projet dans lequel vous souhaitez importer l'image.IMAGE_NAME
: nom de l'image à importer.SOURCE_FILE
: URI de l'image dans Cloud Storage, par exemplegs://my-bucket/my-image.vmdk
.ZONE
: zone dans laquelle vous souhaitez importer l'image. Cette zone doit correspondre à la région du sous-réseau. Par exemple, siSUBNET
est défini surus-west1
, la zone d'importation doit être l'une des suivantes :us-west1-a
,us-west1-b
ouus-west1-c
.NETWORK
: chemin d'accès complet à un réseau VPC partagé. Exemple :projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
.SUBNET
: chemin d'accès complet à un sous-réseau VPC partagé (par exemple,projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
).
Importer un disque virtuel à l'aide d'un compte de service Compute Engine personnalisé
Lors d'une importation d'image, des instances de machines virtuelles (VM) temporaires sont créées dans votre projet. L'outil d'importation d'image de ces VM temporaires doit être authentifié.
Un compte de service est une identité associée à une VM. Les jetons d'accès au compte de service sont accessibles via le serveur de métadonnées d'instance et permettent d'authentifier l'outil d'importation d'images sur la VM.
Par défaut, le processus d'importation utilise l'agent de service Compute Engine par défaut du projet. Toutefois, si le compte de service Compute Engine par défaut est désactivé dans votre projet ou si vous souhaitez utiliser un compte de service Compute Engine personnalisé, vous devez créer un compte de service et le spécifier pour le processus d'importation.
gcloud
Ajoutez le disque virtuel dans Cloud Storage.
Créez un compte de service et attribuez les rôles minimaux. Pour en savoir plus sur la création des comptes de service, consultez la page Créer et gérer des comptes de service.
Au minimum, le compte de service Compute Engine spécifié doit avoir les rôles suivants :
roles/compute.storageAdmin
roles/storage.objectViewer
Pour en savoir plus, consultez la section Attribuer les rôles requis au compte de service Compute Engine.
Utilisez la commande
gcloud compute images import
pour importer l'image.gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --compute-service-account SERVICE_ACCOUNT_EMAIL
Remplacez l'élément suivant :
IMAGE_NAME
: nom de votre image de destination.SOURCE_FILE
: votre fichier de disque virtuel. Ce fichier peut être un fichier local ou un fichier stocké dans Cloud Storage. Si votre disque virtuel est un fichier local, vous pouvez utiliser un chemin d'accès absolu ou relatif. Si votre fichier de disque virtuel est déjà stocké dans Cloud Storage, celui-ci doit exister dans un bucket Cloud Storage du même projet que celui utilisé pour le processus d'importation. Vous devez spécifier le chemin complet du fichier au formatgs://BUCKET_NAME/OBJECT_NAME
.SERVICE_ACCOUNT_EMAIL
: adresse e-mail associée au compte de service Compute Engine créé à l'étape précédente.
Exemple
L'exemple suivant importe un disque virtuel de démarrage nommé
my_server.vmdk
stocké dansgs://your_gcs_bucket
à l'aide d'un compte de service dont l'adresse e-mail estimage-export-service-account@proj-12345.iam.gserviceaccount.com
.gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_server.vmdk \ --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
REST
Ajoutez le disque virtuel dans Cloud Storage.
Créez un compte de service et attribuez les rôles minimaux. Pour en savoir plus sur la création des comptes de service, consultez la page Créer et gérer des comptes de service.
Au minimum, le compte de service Compute Engine spécifié doit avoir les rôles suivants :
roles/compute.storageAdmin
roles/storage.objectViewer
Pour en savoir plus, consultez la section Attribuer les rôles requis au compte de service Compute Engine.
Ajoutez le disque virtuel dans Cloud Storage.
Envoyez une requête
POST
à l'API Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-compute_service_account=SERVICE_ACCOUNT_EMAIL", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Remplacez l'élément suivant :
PROJECT_ID
: ID du projet dans lequel vous souhaitez importer l'image.IMAGE_NAME
: nom de l'image à importer.SOURCE_FILE
: URI de l'image dans Cloud Storage, par exemplegs://my-bucket/my-image.vmdk
.SERVICE_ACCOUNT_EMAIL
: adresse e-mail associée au compte de service Compute Engine créé à l'étape précédente.
Rendre une image amorçable
Si vous disposez d'une image personnalisée Compute Engine avec un système d'exploitation amorçable mais que celui-ci ne dispose pas des pilotes ou packages de l'environnement invité Compute Engine nécessaires, vous pouvez utiliser l'outil d'importation d'image pour rendre cette image amorçable sur Compute Engine.
Utilisez l'option --source-image
pour spécifier une image personnalisée à rendre amorçable, au lieu d'utiliser l'option --source-file
qui spécifie un nouveau disque à importer.
gcloud compute images import IMAGE_NAME \ --source-image SOURCE_IMAGE_NAME
Remplacez l'élément suivant :
IMAGE_NAME
: nom de votre image de destination.SOURCE_IMAGE_NAME
: nom de votre image source.Pour découvrir comment importer des images dans Google Cloud avec des licences existantes, consultez la page Utiliser vos propres licences (Bring your own license).
Exemple de commande
L'exemple suivant transforme une image Compute Engine nommée my-image
en une image de démarrage nommée my-bootable-image
.
Dans cet exemple, --os ubuntu-1604
remplace le système d'exploitation détecté.
gcloud compute images import my-bootable-image \ --source-image my-image \ --os ubuntu-1604
Nettoyer les ressources
Le stockage des fichiers dans Cloud Storage et des images dans Compute Engine entraîne des frais. L'outil d'importation importe le fichier de disque virtuel vers Cloud Storage et crée une image personnalisée Compute Engine.
Après avoir vérifié que l'image a bien été importée et qu'elle démarre correctement en tant qu'instance Compute Engine, vous pouvez supprimer le fichier de disque virtuel dans Cloud Storage. L'outil imprime l'URI du fichier lors de son transfert vers Cloud Storage. Cette URI a la forme suivante : gs://BUCKET_NAME/tmpimage/IMAGE_NAME
.
Si vous avez importé une image à l'aide de l'option --data-disk
, puis exécuté l'outil import
une seconde fois avec l'option --source-image
pour rendre l'image amorçable, la première image existe toujours. Si vous n'en avez pas besoin, envisagez de supprimer cette image. Si vous spécifiez le même nom d'image pour les indicateurs --image
et --source-image
, l'image est automatiquement remplacée et aucun autre nettoyage n'est nécessaire.
Étapes suivantes
- Créez une instance de VM qui utilise votre image amorçable.
- Partagez votre image entre plusieurs projets.