Un dispositif virtuel est un package contenant des images disque et une configuration matérielle pour une instance de machine virtuelle (VM).
Le format OVF est le format couramment utilisé pour les dispositifs virtuels.
Lorsque vous empaquetez des dispositifs virtuels au format OVF, vous générez un package OVF. Un package OVF est un dossier qui contient un fichier descripteur .ovf ainsi qu'un ensemble d'autres ressources, par exemple des disques. Lorsqu'un package OVF est archivé dans un seul fichier, il est appelé fichier OVA.
Cette page décrit les étapes à suivre pour importer une image système à partir d'un dispositif virtuel à l'aide de Compute Engine.
Avant de commencer
- Activez l'API VM Migration sur votre projet.
- Vérifiez que le disque de démarrage est configuré avec un système d'exploitation compatible.
Formats de fichiers acceptés
Vous pouvez importer des fichiers d'image système aux formats suivants à l'aide de Compute Engine :
Open Virtualization Format (OVF) : un fichier OVF et des fichiers de disque de machine virtuelle (VMDK) dans le même bucket.
Open Virtual Appliance (OVA) : un fichier OVA contenant un fichier OVF et des fichiers de disque. Compute Engine permet d'importer des fichiers d'image système OVA dans les formats de fichier de disque suivants :
- Disque de machine virtuelle (VMDK)
- Copie sur écriture QEMU (QCOW)
- Copie sur écriture QEMU 2 (QCOW2)
- Format de disque amélioré QEMU (QED)
- VPC
- Image de disque virtuel (VDI)
- Disque dur virtuel v2 (VHDX)
Limites
Les limites suivantes s'appliquent lorsque vous importez des images système :
- Vous ne pouvez importer des images système que dans les régions compatibles avec les familles d'instances N2.
- Vous ne pouvez pas importer d'images système dans les séries de machines de 4e génération. Pour en savoir plus, consultez Limites et restrictions concernant l'importation d'images système.
- Vous ne pouvez pas importer d'images système basées sur l'architecture Arm.
- Vous ne pouvez pas créer d'images système à partir de VM sources qui présentent l'une des caractéristiques suivantes :
- Disques associés de plus de 200 To
- Types de machines A4, A3, C3D, H3 ou Z3
Processus d'importation d'images système
Pour importer une image système dans une image système Compute Engine à l'aide de Compute Engine, procédez comme suit :
- Préparez un fichier d'image système pour l'importation.
- Choisissez un projet cible.
- Importez une image système dans Compute Engine.
Préparer un fichier système pour l'importation
Pour importer une image système dans une image Compute Engine, vous devez d'abord préparer le fichier d'image système pour l'importation. Les sections suivantes décrivent ces tâches en détail.
Ajouter le fichier d'image système dans Cloud Storage
Pour importer une image système dans une image Compute Engine, vous devez d'abord ajouter le fichier d'image système dans Cloud Storage. Pour en savoir plus, consultez Importer des objets à partir d'un système de fichiers. Pour des performances optimales, nous vous recommandons d'importer le fichier d'image système dans un bucket situé dans l'environnement Google Cloud où vous souhaitez créer l'image système.
Accorder les autorisations requises
Pour importer une image système dans une image système Compute Engine, accordez des autorisations comme décrit dans le tableau suivant.
| Rôle | Autorisations requises | Description |
|---|---|---|
| Lecteur d'objets Storage | roles/storage.objectViewer |
Attribuez le rôle roles/storage.objectViewer au compte de service Migrate to Virtual Machines par défaut du projet hôte (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) pour le bucket où se trouve l'image que vous souhaitez importer. Cette autorisation permet à Migrate to Virtual Machines d'accéder à l'image source. |
| Administrateur VM Migration | roles/vmmigration.admin |
Dans le projet hôte, accordez le rôle roles/vmmigration.admin au compte utilisateur que vous souhaitez utiliser pour importer l'image source. |
| Compte de service VM Migration | roles/vmmigration.serviceAgent |
Attribuez le rôle roles/vmmigration.serviceAgent au compte de service Migrate to Virtual Machines par défaut du projet hôte (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) pour le projet cible. Par exemple, si service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com est le compte de service Migrate to Virtual Machines dans le projet hôte, vous devez accorder à ce compte de service le rôle roles/vmmigration.serviceAgent pour qu'il puisse créer l'image dans le projet cible. |
Choisir un projet cible
Pour héberger l'image système, vous devez créer ou choisir un projet cible. Un projet cible définit le projet de destination pour une image système. Pour en savoir plus sur la création ou le choix d'un projet cible, consultez Ajouter un projet cible.
Importer une image système dans Compute Engine
Vous pouvez importer une image système dans Compute Engine à l'aide de la Google Cloud CLI ou des commandes de l'API REST.
Lorsque vous importez une image système, Compute Engine crée des ressources temporaires, telles que des VM ou des disques, dans le projet cible. Ces ressources temporaires sont supprimées une fois le processus d'importation de l'image système terminé.
gcloud
Pour importer une image système dans Compute Engine à l'aide de la Google Cloud CLI, utilisez la requête suivante :
gcloud alpha migration vms machine-image-imports create IMAGE_NAME \ --source-file=SOURCE_FILE \ --location=REGION_ID \ --target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
Remplacez les éléments suivants :
IMAGE_NAME: nom de l'image système que vous souhaitez créer. Pour en savoir plus sur les règles de dénomination, consultez Convention d'attribution de noms.SOURCE_FILE: fichier à partir duquel vous souhaitez importer l'image système. Saisissez le chemin d'accès au format gs://bucket/dossier/fichier. Pour savoir comment obtenir le chemin d'accès d'un objet dans un bucket, consultez Afficher les métadonnées d'objets. Notez que vous ne pouvez importer des images qu'à partir des fichiers.ovfet.ova.REGION_ID: région dans laquelle vous souhaitez exécuter le processus d'importation d'image système. L'image système est créée dans l'emplacement multirégional le plus proche. Si vous souhaitez que l'image système soit créée dans un emplacement régional, assurez-vous quesingleRegionStorageest défini sur "true". Pour obtenir la liste des régions compatibles, consultez Régions et zones.HOST_PROJECT_ID: nom du projet hôte à partir duquel vous souhaitez migrer l'image système.TARGET_PROJECT: projet cible dans lequel vous souhaitez créer l'image système. Si vous n'avez pas encore ajouté de projet cible, suivez les instructions fournies dans Ajouter un projet cible pour le faire.REGION_ID: région dans laquelle vous souhaitez exécuter le processus d'importation d'image système. L'image système est créée dans l'emplacement multirégional le plus proche. Si vous souhaitez que l'image système soit créée dans un emplacement régional, assurez-vous quesingleRegionStorageest défini sur "true". Pour obtenir la liste des régions compatibles, consultez Régions et zones.
Pour en savoir plus, consultez gcloud compute migration machine-image-imports
API REST
Pour importer une image système dans Compute Engine à l'aide de l'API REST, procédez comme suit.
Créez une ressource d'importation d'image système à l'aide de la requête suivante :
POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME { "cloudStorageUri": "SOURCE_FILE", "machineImageTargetDefaults": { "imageName": "IMAGE_NAME", "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT", ... } }Remplacez les éléments suivants :
HOST_PROJECT_ID: nom du projet hôte à partir duquel vous souhaitez migrer l'image système.REGION_ID: région dans laquelle vous souhaitez exécuter le processus d'importation d'image système. L'image système est créée dans l'emplacement multirégional le plus proche. Si vous souhaitez que l'image système soit créée dans un emplacement régional, assurez-vous quesingleRegionStorageest défini sur "true". Pour obtenir la liste des régions compatibles, consultez Régions et zones.SOURCE_FILE: fichier à partir duquel vous souhaitez importer l'image système. Saisissez le chemin d'accès au format gs://bucket/dossier/fichier. Pour savoir comment obtenir le chemin d'accès d'un objet dans un bucket, consultez Afficher les métadonnées d'objets. Notez que vous ne pouvez importer des images système qu'à partir des fichiers.ovaet.ovf.IMAGE_NAME: nom de l'image système que vous souhaitez créer. Pour en savoir plus sur les règles de dénomination, consultez Convention d'attribution de noms.TARGET_PROJECT: projet cible dans lequel vous souhaitez créer l'image système. Si vous n'avez pas encore ajouté de projet cible, suivez les instructions fournies dans Ajouter un projet cible pour le faire.
Dans cet exemple,
IMPORT_NAMEest un ID qui représente la ressource d'importation d'image système. Lorsque vous importez une image système dans Compute Engine, Migrate to Virtual Machines crée en premier lieu une ressource d'importation d'image système. La ressource d'importation d'image système représente le processus d'importation d'image système. Vous pouvez utiliserIMPORT_NAMEpour obtenir le lien vers l'image système importée via le processus d'importation d'image système.Consultez le tableau suivant pour obtenir la liste complète des champs de requête de création d'importation d'image système acceptés.
Nom du champ Description cloudStorageUriChemin d'accès du fichier à partir duquel vous souhaitez importer l'image système. Saisissez le chemin d'accès au format gs://bucket/dossier/fichier. Pour savoir comment obtenir le chemin d'accès d'un objet dans un bucket, consultez Afficher les métadonnées d'objets.
Notez que vous ne pouvez importer des images système qu'à partir des fichiers.ovfet.ova.machineImageTargetDefaults.targetProjectProjet cible dans lequel vous souhaitez créer l'image système. Pour en savoir plus, consultez la documentation de référence de l'API qui concerne le projet cible. Par exemple, projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
Dans l'exemple, remplacez les éléments suivants :HOST_PROJECT_ID: nom du projet hôte à partir duquel vous souhaitez migrer l'image système.TARGET_PROJECT: projet cible dans lequel vous souhaitez créer l'image.
machineImageTargetDefaults.machine_image_nameNom de l'image système à créer. Pour en savoir plus sur les règles de dénomination, consultez Convention d'attribution de noms. machineImageTargetDefaults.description(Facultatif) Description de l'image système. machineImageTargetDefaults.machine_type(Facultatif) Machine avec laquelle créer l'image système. Si vous ne spécifiez pas le type de machine, Compute Engine choisit un type de machine adapté en fonction des informations de l'image système source. machineImageTargetDefaults.labelsPour organiser votre projet, ajoutez à vos ressources des étiquettes sous forme de paires clé/valeur. Consultez Organiser des ressources à l'aide d'étiquettes pour en savoir plus. machineImageTargetDefaults.tagsAjoutez les tags que vous souhaitez associer à l'image système. Consultez Gérer les tags pour les ressources. machineImageTargetDefaults.additionalLicensesVous pouvez ajouter jusqu'à 10 licences supplémentaires à l'instance de VM créée à partir de l'image système importée en utilisant un format d'URL valide. Par exemple, vous pouvez ajouter des licences supplémentaires en utilisant le format d'URL suivant :
https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
machineImageTargetDefaults.service_accountSpécifiez le compte de service dans le projet cible utilisé par l'image système. Par défaut, aucun compte de service n'est attribué à l'image système.
Si vous créez une instance Compute Engine à partir d'une image système et que vous prévoyez d'y exécuter une application, cette instance peut avoir besoin d'accéder à d'autres services et API de la gcloud CLI. Créez un compte de service dans le projet cible et accordez-lui les autorisations nécessaires pour accéder à ces services et API avant de créer l'instance Compute Engine. Ensuite, spécifiez ce compte de service ici. Pour en savoir plus, consultez Configurer une VM pour qu'elle s'exécute via un compte de service.
Pour associer le compte de service à l'instance Compute Engine, votre compte utilisateur sur le projet hôte Compute Engine doit disposer des autorisations nécessaires. Pour en savoir plus, consultez Configurer des autorisations sur le compte de service du projet cible.machineImageTargetDefaults.shielded_instance_config(Facultatif) Activez le mode VM protégée sur cette instance. Les VM protégées sont renforcées par un ensemble de paramètres de sécurité conçus pour les préserver des rootkits et bootkits. Consultez Qu'est-ce qu'une VM protégée ? machineImageTargetDefaults.singleRegionStorageDéfinissez cette option sur "true" si vous souhaitez que l'image système storageLocationssoit créée dans une région. Si vous définissez cette option sur "false", l'emplacement multirégional le plus proche est sélectionné.machineImageTargetDefaults.skip_os_adaptationDéfinissez cette option sur "true" si vous souhaitez ignorer l'adaptation de l'OS.
Pour que les VM créées à partir d'images système importées fonctionnent correctement sur Google Cloud, il est nécessaire de modifier leur configuration. Ces modifications sont désignées par le terme adaptations d'OS. Compute Engine effectue automatiquement des adaptations d'OS dans le processus d'importation d'image système. Pour en savoir plus, consultez Adapter les instances de VM pour qu'elles s'exécutent sur Google Cloud.machineImageTargetDefaults.osAdaptationParameters.licenseTypeType de licence que vous souhaitez utiliser pour votre image système. Compute Engine permet d'utiliser des licences avec paiement à l'usage (PAYG, Pay As You Go) ou vos propres licences (BYOL, Bring Your Own License) pour les VM déployées. Le type de licence par défaut pour une VM migrée est attribué par Compute Engine en fonction du système d'exploitation migré, comme décrit dans Systèmes d'exploitation compatibles.
Si votre système d'exploitation accepte plusieurs types de licences, vous pouvez remplacer le type de licence par défaut en spécifiant explicitement un type de licence PAYG ou BYOL.
machineImageTargetDefaults.osAdaptationParameters.network_interfacesCompute Engine vous permet également de créer des images système avec plusieurs cartes d'interface réseau. Chaque interface est associée à un réseau VPC distinct, ce qui permet à une telle image système d'accéder à différents réseaux VPC au sein de Google Cloud.
Avant d'ajouter des interfaces réseau supplémentaires, tenez compte des points suivants :- Il n'est pas possible d'associer plusieurs interfaces réseau au même réseau VPC. Bien qu'une telle configuration puisse être enregistrée, l'instanciation de la VM résultante échouera.
- Une fois qu'une instance Compute Engine est instanciée depuis une image système à l'aide de
test-cloneoucut-over, vous ne pouvez pas ajouter ni supprimer d'interface réseau sur l'instance créée. Vous pouvez répétertest-cloneoucut-overavec différents détails cibles pour recréer l'instance.
Pour ajouter ou supprimer une interface réseau, procédez comme suit : - Sélectionnez Ajouter une interface réseau pour ajouter une interface réseau supplémentaire à l'instance Compute Engine. Vous pouvez définir toutes les options de la même façon que pour l'interface réseau initiale.
machineImageTargetDefaults.osAdaptationParameters.generalizeDéfinissez cette option sur "true" si vous souhaitez généraliser l'image système.
Lorsque vous créez une instance à partir d'une image système, Windows ajoute des informations uniques à l'instance. Le processus de généralisation supprime ces informations afin que vous puissiez créer plusieurs instances à partir de la même image système.machineImageTargetDefaults.encryptionLa clé Google-owned and Google-managed encryption key que vous souhaitez utiliser pour chiffrer vos données lors du processus d'importation. Pour en savoir plus, consultez Chiffrement au repos par défaut.
Utilisez des clés de chiffrement gérées par le client (CMEK) pour chiffrer les données de l'image système. Ces clés de chiffrement sont créées, gérées et détenues par vous. Pour en savoir plus, consultez Protéger des ressources avec des clés Cloud KMS.
Remarque : La clé de chiffrement que vous sélectionnez pour utilisation lors du processus d'importation sera également utilisée pour l'image de sortie.
Lorsque vous ajoutez une clé CMEK, vous devez accorder des autorisations comme décrit dans le tableau suivant.Rôle Autorisations requises Description Compte de service Cloud VM Migration roles/vmmigration.serviceAgent Accordez cette autorisation au compte de service Compute Engine pour chiffrer les données de l'image système créée lors du processus d'importation. Agent de service Compute Engine roles/compute.serviceAgent Accordez cette autorisation à l'agent de service Compute Engine pour chiffrer les données lors du processus d'importation. Un résultat semblable à l'exemple suivant doit s'afficher :
{ "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID", "metadata": { "createTime": "2023-10-31T09:12:26.94928636Z", "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME", "verb": "create", "apiVersion": "v1", "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata" } }Pour vérifier si le job d'importation d'image système est terminé, interrogez l'opération à l'aide de la commande suivante :
GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID
Remplacez les éléments suivants :
HOST_PROJECT_ID: nom du projet hôte à partir duquel vous migrez l'image système.REGION_ID: région dans laquelle vous souhaitez exécuter le processus d'importation d'image système. L'image système est créée dans l'emplacement multirégional le plus proche. Si vous souhaitez que l'image système soit créée dans un emplacement régional, assurez-vous quesingleRegionStorageest défini sur "true". Pour obtenir la liste des régions compatibles, consultez Régions et zones.OPERATION_ID: ID d'opération du job de migration.
Une réponse d'achèvement d'opération semblable à l'exemple suivant doit s'afficher :
{ "done": true, "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID", "response": { "@type": "type.googleapis.com/google.cloud.vmmigration.v1.ImageImport", "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME", "cloudStorageUri": "SOURCE_FILE", "createTime": "2023-10-31T09:04:04.413664947Z", "machineImageTargetDefaults": { "imageName": "IMAGE_NAME", "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT" }, "recentImageImportJobs": [ { "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job", "diskImageTargetDetails": { "imageName": "IMAGE_NAME", "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT" }, "state": "PENDING" } ] }, "metadata": { "createTime": "2023-10-31T09:04:04.416740716Z", "endTime": "2023-10-31T09:05:36.79987142Z", "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME", "verb": "create", "apiVersion": "v1", "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata" } }Surveillez l'achèvement du job d'importation d'image système à l'aide de la commande suivante :
GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job
Remplacez les éléments suivants :
HOST_PROJECT_ID: nom du projet hôte à partir duquel vous migrez l'image système.REGION_ID: région dans laquelle vous souhaitez exécuter le processus d'importation d'image système. L'image système est créée dans l'emplacement multirégional le plus proche. Si vous souhaitez que l'image système soit créée dans un emplacement régional, assurez-vous quesingleRegionStorageest défini sur "true". Pour obtenir la liste des régions compatibles, consultez Régions et zones.IMPORT_NAME: ID représentant la ressource d'importation d'image système. Lorsque vous importez une image système dans Compute Engine, Migrate to Virtual Machines crée en premier lieu une ressource d'importation d'image système. La ressource d'importation d'image système représente le processus d'importation d'image système. Vous pouvez utiliserIMPORT_NAMEpour obtenir le lien vers l'image système importée via le processus d'importation d'image système.
Une réponse d'achèvement du job semblable à l'exemple suivant doit s'afficher :
{ "createTime":"2023-10-31T09:12:27.053788394Z", "createdResources":[ "https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME" ], "diskImageTargetDetails": { "imageName":"IMAGE_NAME", "targetProject":"projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT" }, "endTime":"2023-10-31T09:16:50.224865783Z", "name":"projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job", "state":"SUCCEEDED" }
Étapes suivantes
- Apprenez-en plus sur les nœuds à locataire unique.
- En savoir plus sur BYOL.