Importer des disques virtuels


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 et projects/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

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. 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.

      Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      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

  1. Dans Google Cloud Console, importez le fichier de disque virtuel sur Cloud Storage.
  2. Accédez à la page Créer une image.

    Accéder à la page "Créer une image"

  3. Indiquez un Nom pour votre image.

  4. Sous Source, sélectionnez Disque virtuel (VMDK, VHD,…).

  5. Recherchez ou saisissez manuellement l'emplacement de stockage du fichier Cloud Storage.

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

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

  8. 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 format gs://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

  1. Ajoutez le disque virtuel dans Cloud Storage.

  2. 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 exemple gs://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

  1. Dans Google Cloud Console, importez le fichier de disque virtuel sur Cloud Storage.
  2. Accédez à la page Créer une image.

    Accéder à la page "Créer une image"

  3. Indiquez un Nom pour votre image.

  4. Sous Source, sélectionnez Disque virtuel (VMDK, VHD,…).

  5. Recherchez ou saisissez manuellement l'emplacement de stockage du fichier Cloud Storage.

  6. Sous Système d'exploitation, sélectionnez Aucun système d'exploitation. Données uniquement.

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

  8. 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 format gs://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

  1. Ajoutez le disque virtuel dans Cloud Storage.

  2. 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 exemple gs://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 :

  1. Ajoutez le disque virtuel dans Cloud Storage.

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

  3. Configurez l'accès privé à Google. Pour plus d'informations, consultez la page Configurer l'accès privé à Google.

  4. 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 format gs://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 commande gcloud 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 exemple gs://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 :

  1. Ajoutez le disque virtuel dans Cloud Storage.

  2. 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 exemple gs://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 format gs://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, si SUBNET est défini sur us-west1, la zone d'importation doit être l'une des suivantes : us-west1-a, us-west1-b ou us-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

  1. Ajoutez le disque virtuel dans Cloud Storage.

  2. 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 exemple gs://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, si SUBNET est défini sur us-west1, la zone d'importation doit être l'une des suivantes : us-west1-a, us-west1-b ou us-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

  1. Ajoutez le disque virtuel dans Cloud Storage.

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

  3. 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 format gs://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é dans gs://your_gcs_bucket à l'aide d'un compte de service dont l'adresse e-mail est image-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

  1. Ajoutez le disque virtuel dans Cloud Storage.

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

  3. Ajoutez le disque virtuel dans Cloud Storage.

  4. 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 exemple gs://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