Importer des dispositifs virtuels


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

Formats compatibles

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 VMDK.

Processus d'importation d'une image système

Pour importer une image système dans Compute Engine à l'aide de Compute Engine, procédez comme suit:

  1. Préparer un fichier d'image système pour l'importation
  2. Choisir un projet cible
  3. Importer 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 système Compute Engine, vous devez d'abord ajouter le fichier d'image système dans Cloud Storage. Pour en savoir plus, consultez la page 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 le même Google Cloud que celui dans lequel 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 des objets Storage roles/storage.objectViewer 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) sur 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) sur 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 pouvoir 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 la section 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 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 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 d'attribution de noms, consultez la section 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 obtenir le chemin d'accès d'un objet dans un bucket, consultez la page Afficher les métadonnées d'objets. Notez que vous ne pouvez importer des images qu'à partir des fichiers .ovf et .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 que singleRegionStorage est défini sur "true". Pour obtenir la liste des régions compatibles, consultez la page 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 la section Ajouter un projet cible.
  • 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 que singleRegionStorage est défini sur "true". Pour obtenir la liste des régions compatibles, consultez la page Régions et zones.

Pour en savoir plus, consultez gcloud migration vms image-imports

API REST

Pour importer une image système dans Compute Engine à l'aide de l'API REST, procédez comme suit.

  1. 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 que singleRegionStorage est défini sur "true". Pour obtenir la liste des régions compatibles, consultez la page 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/folder/file. Pour obtenir le chemin d'accès d'un objet dans un bucket, consultez la page Afficher les métadonnées d'objets. Notez que vous ne pouvez importer des images qu'à partir des fichiers .ova et .ovf.
    • IMAGE_NAME: nom de l'image système que vous souhaitez créer. Pour en savoir plus sur les règles d'attribution de noms, consultez la section 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 la section Ajouter un projet cible.

    Dans cet exemple, IMPORT_NAME est 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 d'abord 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 utiliser IMPORT_NAME pour obtenir le lien vers l'image système qui a été importée lors du 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'images système compatibles.

    Nom du champ Description
    cloudStorageUri Chemin d'accès du fichier à partir duquel vous souhaitez importer l'image système. Saisissez le chemin d'accès au format gs://bucket/folder/file. Pour obtenir le chemin d'accès d'un objet dans un bucket, consultez la page Afficher les métadonnées d'objets.
    Notez que vous ne pouvez importer des images qu'à partir des fichiers .ovf et .ova.
    machineImageTargetDefaults.targetProject Projet 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 concernant 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_name Nom de l'image système à créer. Pour en savoir plus sur les règles d'attribution de noms, consultez la section Convention d'attribution de noms aux ressources.
    machineImageTargetDefaults.description (Facultatif) Description de l'image système.
    machineImageTargetDefaults.machine_type (Facultatif) Machine à utiliser pour 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.labels Pour organiser votre projet, ajoutez des étiquettes sous forme de paires clé/valeur à vos ressources. Consultez la page Attribuer des libellés à des ressources pour en savoir plus.
    machineImageTargetDefaults.tags Ajoutez les tags que vous souhaitez associer à l'image de la machine. Consultez la section Gérer les tags pour les ressources.
    machineImageTargetDefaults.additionalLicenses Vous 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_account Spécifiez le compte de service dans le projet cible utilisé par l'image de machine. 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 avec 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 la section Configurer une VM pour qu'elle s'exécute en tant que compte de service.
    Pour associer le compte de service à l'instance Compute Engine, votre compte utilisateur dans 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 la 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 éliminer les rootkits et les bootkits. Consultez la page Qu'est-ce qu'une VM protégée ?
    machineImageTargetDefaults.singleRegionStorage Définissez cette option sur "true" si vous souhaitez que l'storageLocations de l'image système soit une région. Si vous définissez cette option sur "false", l'emplacement multirégional le plus proche est sélectionné.
    machineImageTargetDefaults.skip_os_adaptation Définissez cette option sur "true" si vous souhaitez ignorer l'adaptation de l'OS.
    Pour qu'elles fonctionnent correctement sur Google Cloud, il est nécessaire de modifier la configuration des VM créées à partir d'images système importées. 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 la section Adapter les instances de VM pour qu'elles s'exécutent sur Google Cloud.
    machineImageTargetDefaults.osAdaptationParameters.licenseType Type de licence que vous souhaitez utiliser pour votre image de machine. Compute Engine est compatible avec les licences de type paiement à l'usage (Pay As You Go) et l'utilisation de vos propres licences (Bring Your Own License) pour vos VM déployées. Le type de licence par défaut d'une VM migrée est attribué par Compute Engine en fonction du système d'exploitation migré, comme décrit dans la section 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 pour spécifier explicitement un type de licence PAYG (Pay As You Go) ou BYOL (Bring Your Own License).
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces Compute Engine vous permet de créer éventuellement des images système avec plusieurs cartes d'interface réseau. Chaque interface est associée à un réseau VPC distinct, ce qui permet à cette image système d'accéder à différents réseaux VPC au sein de gcloud CLI.
    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 que la configuration puisse être enregistrée, l'instanciation de la VM échouera.
    • Une fois qu'une instance Compute Engine est instanciée depuis une image système à l'aide de test-clone ou cut-over, vous ne pouvez pas ajouter ni supprimer d'interface réseau sur l'instance créée. Vous pouvez répéter test-clone ou cut-over avec 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 mêmes options que celles de l'interface réseau initiale.
    Pour plus d'informations, consultez la page Créer des instances avec plusieurs interfaces réseau.
    machineImageTargetDefaults.osAdaptationParameters.generalize Dé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.encryption Clé de chiffrement gérée par Google que vous souhaitez utiliser pour chiffrer vos données lors du processus d'importation. Pour en savoir plus, consultez la page 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 de machine. Ces clés de chiffrement sont créées, gérées et détenues par vous. Pour en savoir plus, consultez la page Protéger des ressources à l'aide de clés Cloud KMS.
    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"
      }
    }
    
  2. 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 que singleRegionStorage est défini sur "true". Pour obtenir la liste des régions compatibles, consultez la page 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"
        }
      }
    
  3. 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 que singleRegionStorage est défini sur "true". Pour obtenir la liste des régions compatibles, consultez la page 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 d'abord 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 utiliser IMPORT_NAME pour obtenir le lien vers l'image système qui a été importée lors du 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"
    }
    

Étape suivante