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.

Vous pouvez importer des VM au format OVF dans Compute Engine, qu'elles soient contenues dans un package OVF ou dans un fichier OVA unique. Pour vérifier si le dispositif virtuel constitue le meilleur choix pour votre cas d'utilisation, consultez la page Choisir une méthode d'importation.

Lorsque vous importez un dispositif virtuel, le processus d'importation utilise les informations stockées dans le fichier descripteur pour créer et démarrer une VM sur Compute Engine.

Sur Compute Engine, vous pouvez importer des fichiers OVA ou OVF comme suit :

Avant de commencer

Exigences

Cette section répertorie les conditions requises pour importer des dispositifs virtuels dans Compute Engine.

Configuration requise pour la VM source

Les conditions suivantes doivent être remplies par la VM utilisée pour créer le fichier OVF :

  • Les disques virtuels doivent être au format VMDK ou VHD.
  • Les disques virtuels ne doivent pas être chiffrés.

    Pour vérifier que votre VM remplit les conditions requises, vous pouvez exécuter l'outil de vérification préalable.

Le système d'exploitation de la VM source doit répondre aux exigences suivantes :

  • Pour tous les systèmes d'exploitation Windows, PowerShell version 3 ou ultérieure doit être installé. Les versions de PowerShell antérieures à la version 3.0 peuvent entraîner des problèmes avec les scripts de démarrage et d'arrêt utilisés lors du processus d'importation.
  • Pour toutes les distributions Linux, le disque de démarrage doit répondre aux exigences suivantes :

    • GRUB doit être installé sur le disque de démarrage.
    • Le disque de démarrage ne doit pas couvrir plusieurs disques physiques. Un disque partitionné à l'aide d'un gestionnaire de volumes logiques (LVM, Logical Volume Manager) n'est pas compatible. Si le disque couvre plusieurs disques physiques, la VM créée à partir du fichier OVF risque de ne pas démarrer sur Compute Engine.

Exigences relatives aux fichiers OVF

Le fichier OVF doit répondre aux exigences suivantes :

  • Les fichiers OVF doivent fournir la portabilité Level 1 comme décrit dans le document de spécification OVF. Les dispositifs virtuels qui présentent un niveau de portabilité Level 2 peuvent être importés, mais les extensions personnalisées, telles que les détails spécifiques à l'hyperviseur source, sont ignorées lors du processus d'importation.
  • Le fichier OVF ne doit contenir qu'une seule VM. S'il en contient plusieurs, seule la première VM est importée.
  • Le premier disque du fichier OVF doit être amorçable.

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.

Configurations importées par l'outil d'importation

La spécification du format OVF décrit le processus permettant d'empaqueter des dispositifs virtuels indépendamment du fournisseur de virtualisation. Les packages des dispositifs virtuels OVF contiennent un fichier descripteur .ovf ainsi qu'un ensemble d'autres ressources, par exemple des disques virtuels.

Lorsque vous importez un dispositif virtuel OVF vers Compute Engine, les configurations du fichier descripteur ci-dessous sont traitées et importées :

  • Disques virtuels. Informations récupérées à partir de l'élément DiskSection du package OVF.
  • Processeur et mémoire. Informations récupérées à partir de l'élément ResourceAllocationSection du package OVF.

    Si les configurations du processeur ou de la mémoire se trouvent en dehors des plages compatibles avec Compute Engine, le processus d'importation définit les valeurs à la limite maximale acceptée par Compute Engine.

  • Disque de démarrage. Informations récupérées à partir de l'élément BootDeviceSection du package OVF.

  • Système d'exploitation invité. Informations récupérées à partir de l'élément OperatingSystemSection du package OVF.

    Les informations du système d'exploitation invité sont utilisées pour installer les pilotes et les packages d'environnement invité appropriés sur l'instance importée. Si les informations relatives au système d'exploitation invité sont incorrectes dans le package OVF, l'importation échoue. Vous pouvez utiliser l'option --os pour ignorer les informations relatives au système d'exploitation invité.

Les VM importées sont toujours créées avec une carte réseau unique dotée d'une adresse IP externe. Cette carte réseau unique est utilisée quelles que soient les configurations réseau spécifiées dans le fichier OVF. Pour importer une VM sans adresse IP externe, consultez la section Importer une VM sans adresse IP externe.

Lorsque vous importez un dispositif virtuel, les sections suivantes du fichier descripteur ne sont pas importées :

  • NetworkSection
  • AnnotationSection
  • ProductSection
  • EulaSection
  • StartupSection
  • DeploymentOptionSection
  • InstallSection
  • EnvironmentFilesSection
  • SharedDiskSection
  • ScaleOutSection
  • PlacementGroupSection
  • PlacementSection
  • EncryptionSection

Limites

Cette fonctionnalité n'est pas disponible pour les projets protégés par VPC Service Controls.

Systèmes d'exploitation compatibles

Vous pouvez éventuellement spécifier le système d'exploitation dans l'élément OperatingSystemSection de votre fichier descripteur ou spécifier l'option --os lorsque vous importez un dispositif virtuel à l'aide de la Commande gcloud compute instances import.

Pour en savoir plus sur les systèmes d'exploitation compatibles, consultez la page Détails des systèmes d'exploitation.

Compatibilité avec BYOL et BYOS

Par défaut, les fichiers OVF qui utilisent Windows Server et les systèmes d'exploitation Red Hat Enterprise Linux (RHEL) sont importés et configurés pour utiliser un mode de facturation à la demande basé sur un système d'exploitation premium, ce qui entraîne des frais supplémentaires.

Si vous préférez utiliser votre propre licence ou abonnement logiciel, vous pouvez importer des dispositifs 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 dispositifs en tant que dispositifs sous licence BYOL à l'aide de la commande gcloud compute instances import avec l'option --byol. Si vous spécifiez manuellement le système d'exploitation, utilisez l'option --os pour spécifier une valeur contenant le suffixe byol pour le système d'exploitation invité que vous souhaitez importer. Par exemple, --os=rhel-8-byol importe une image RHEL 8 avec une licence existante.

Importer à partir d'un autre projet

  • Projet source : projet dans lequel le fichier OVA ou OVF est stocké.
  • Projet de destination : le projet dans lequel vous souhaitez créer la VM ou l'image système.

Si votre projet source et votre projet de destination sont différents, les comptes de service du projet de destination doivent avoir accès au bucket Cloud Storage de votre projet source.

Pour effectuer une importation à partir d'un autre projet, procédez comme suit :

  1. Dans votre projet source, localisez le bucket Cloud Storage.
  2. Dans le bucket Cloud Storage, accordez le rôle roles/storage.objectViewer aux comptes de service suivants :

    • Compte de service Cloud Build pour le projet de destination : ce compte de service est au format DESTINATION_PROJECT_NUMBER@cloudbuild.gserviceaccount.com.
    • Compte de service Compute Engine pour le projet de destination : ce compte de service est au format DESTINATION_PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    Remplacez DESTINATION_PROJECT_NUMBER par le numéro de projet associé au projet de destination.

    Pour en savoir plus sur l'octroi d'un accès à un bucket Cloud Storage, consultez la page Ajouter un compte principal à une stratégie au niveau du bucket.

  3. Importez le dispositif virtuel ou l'image système.

Importer des dispositifs virtuels

Vous pouvez importer votre dispositif virtuel à l'aide de l'outil de ligne de commande gcloud ou de l'API Cloud Build.

Importer un fichier OVA

gcloud

  1. Importez le dispositif virtuel dans Cloud Storage.
  2. Pour importer un fichier OVA depuis Cloud Storage vers Compute Engine, utilisez la commande gcloud compute instances import.

    gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVA_FILE
    

    Remplacez les éléments suivants :

    • VM_NAME : le nom de l'instance que vous souhaitez créer.
    • PATH_TO_OVA_FILE : le chemin d'accès à votre fichier OVA sur Cloud Storage.

    Exemples

    Pour importer un fichier OVA Ubuntu.ova et créer une instance nommée my-instance, exécutez la commande suivante :

    gcloud compute instances import my-instance \
        --source-uri=gs://my-bucket/Ubuntu.ova
    

    Si les informations sur le système d'exploitation invité sont incorrectes ou si vous souhaitez ignorer le système d'exploitation détecté, vous pouvez spécifier le système d'exploitation en ajoutant l'option --os. Pour obtenir la liste des valeurs acceptées, examinez les options --os de la commande gcloud compute instances import.

    Par exemple, pour importer un fichier OVA Ubuntu.ova et créer une instance nommée my-instance qui exécute Ubuntu 16.04, exécutez la commande suivante :

    gcloud compute instances import my-instance \
        --os=ubuntu-1604
        --source-uri=gs://my-bucket/Ubuntu.ova
    

API

  1. Importez le dispositif virtuel dans Cloud Storage.

  2. Dans l'API, créez une requête POST auprès de l'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-instance-names=VM_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Remplacez l'élément suivant :

    • PROJECT_ID : l'ID du projet dans lequel vous souhaitez importer le fichier OVA.
    • VM_NAME : le nom de l'instance de machine virtuelle à créer. Exemple : my-instance.
    • SOURCE_URI : l'URI du fichier OVA stocké dans Cloud Storage. Exemple : gs://my-bucket/my-instance.ova.
    • ZONE : la zone dans laquelle créer l'instance de VM. Si vous ne renseignez pas ce champ, la zone par défaut du projet est utilisée.

    Pour consulter les autres valeurs args que vous pouvez spécifier, reportez-vous à la section des options facultatives de la page GitHub dédiée à l'importation OVF dans Compute Engine.

    Exemple de réponse

    L'exemple de réponse suivant ressemble à la sortie renvoyée :

    {
    "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-12-30T19:06:03.968694865Z",
        "steps": [
          {
            "name": "gcr.io/compute-image-tools/gce_ovf_import:release",
            "env": [
              "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
            ],
            "args": [
              "-instance-names=my-instance",
              "-ovf-gcs-path=gs://my-bucket/my-instance.ova",
              "-zone=asia-northeast2",
              "-client-id=api",
              "-timeout": "7056s"
            ]
          }
        ],
        "timeout": "7200s",
        "projectId": "myproject-12345",
        "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com",
        "options": {
          "logging": "LEGACY"
        },
        "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345",
        "tags": [
          "gce-ovf-import"
        ]
      }
    }
    }
    

    Pour surveiller votre compilation, vous pouvez utiliser l'une des méthodes suivantes :

    • 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 un fichier OVF

gcloud

  1. Importez le dispositif virtuel dans Cloud Storage.
  2. Pour importer un fichier OVF depuis Cloud Storage vers Compute Engine, utilisez la commande gcloud compute instances import.

    Si votre répertoire ne contient qu'un fichier OVF, vous pouvez fournir soit le chemin vers le fichier descripteur soit celui vers le répertoire contenant le fichier OVF.

    • Pour importer un fichier OVF en indiquant le chemin vers le fichier descripteur, exécutez la commande suivante :

      gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVF_FILE
      
    • Pour importer un fichier OVF en indiquant le chemin du répertoire, exécutez la commande suivante :

      gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVF_DIRECTORY
      

    Remplacez les éléments suivants :

    • VM_NAME : le nom de l'instance à créer.
    • PATH_TO_OVF_FILE : le chemin d'accès au fichier OVF sur Cloud Storage.
    • PATH_TO_OVF_DIRECTORY : le chemin d'accès au répertoire qui contient le fichier OVF sur Cloud Storage.

    Exemples

    • Pour importer un fichier OVF Ubuntu.ovf à partir du répertoire my-ovf-directory, qui crée une instance nommée my-instance, exécutez la commande suivante :

      gcloud compute instances import my-instance \
       --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
      
    • Pour importer un fichier OVF à partir du répertoire my-ovf-directory, qui crée une instance nommée my-instance, exécutez la commande suivante :

      gcloud compute instances import my-instance \
       --source-uri=gs://my-bucket/my-ovf-directory
      

      Si les informations sur le système d'exploitation invité sont incorrectes ou si vous souhaitez ignorer le système d'exploitation détecté, vous pouvez spécifier le système d'exploitation en ajoutant l'option --os. Pour obtenir la liste des valeurs acceptées, examinez les options --os de la commande gcloud compute instances import. Par exemple, pour importer un fichier OVF Ubuntu.ovf et créer une instance nommée my-instance qui exécute Ubuntu 16.04, exécutez la commande suivante :

      gcloud compute instances import my-instance \
       --os=ubuntu-1604 \
       --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
      

API

  1. Ajoutez le dispositif virtuel dans Cloud Storage.

  2. Dans l'API, créez une requête POST auprès de l'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-instance-names=VM_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Remplacez l'élément suivant :

    • PROJECT_ID : l'ID du projet dans lequel vous souhaitez importer le fichier OVA.
    • VM_NAME : le nom de l'instance de machine virtuelle à créer. Exemple : my-instance.
    • SOURCE_URI : l'URI du fichier OVF stocké dans Cloud Storage. Exemple : gs://my-bucket/my-instance.ovf.
    • OS : le système d'exploitation du fichier OVF. Exemple : ubuntu-1604. L'option --os est facultative par défaut, mais vous pouvez ignorer le système d'exploitation détecté à l'aide de cette option. Pour obtenir la liste des valeurs acceptées, examinez les options --os de la commande gcloud compute instances import.
    • ZONE : la zone dans laquelle créer l'instance de VM. Si vous ne renseignez pas ce champ, la zone par défaut du projet est utilisée.

    Pour consulter les autres valeurs args que vous pouvez spécifier, reportez-vous à la section des options facultatives de la page GitHub dédiée à l'importation OVF dans Compute Engine.

    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-12-30T19:06:03.968694865Z",
        "steps": [
          {
            "name": "gcr.io/compute-image-tools/gce_ovf_import:release",
            "env": [
              "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
            ],
            "args": [
              "-instance-names=my-instance",
              "-ovf-gcs-path=gs://my-bucket/my-instance.ovf",
              "-os=ubuntu-1404",
              "-zone=asia-south1",
              "-client-id=api",
              "-timeout": "7056s"
            ]
          }
        ],
        "timeout": "7200s",
        "projectId": "myproject-12345",
        "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com",
        "options": {
          "logging": "LEGACY"
        },
        "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345",
        "tags": [
          "gce-ovf-import"
        ]
      }
    }
    }
    

    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 avec des paramètres personnalisés

CPU et mémoire personnalisés

gcloud

Si vous souhaitez remplacer la configuration des processeurs ou de la mémoire spécifiée dans le fichier OVF, suivez les étapes d'importation d'un fichier OVA ou d'importation d'un fichier OVF dans l'outil de ligne de commande gcloud en spécifiant les options --custom-cpu et --custom-memory.

Exemple

Pour importer une instance nommée my-instance disposant de deux processeurs et de 2 048 Mo de mémoire, exécutez la commande suivante :

gcloud compute instances import my-instance \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

API

Pour remplacer la configuration du processeur ou de la mémoire spécifiée dans le fichier OVF, suivez les étapes de l'API Cloud Build pour importer un fichier OVA ou importer un fichier OVF et spécifiez l'argument -machine-type. Cet argument -machine-type représente un type de machine prédéfini ou personnalisé à utiliser.

Exemple

Pour importer une instance nommée my-instance disposant de deux processeurs et de 2 048 Mo de mémoire, utilisez la requête suivante : Remplacez PROJECT_ID par l'ID du projet.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-instance-names=my-instance",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-machine-type=custom-2-2048",
        "-zone=asia-south1",
        "-client-id=api",
        "-timeout=7056s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":[
    "gce-ovf-import"
  ]
}

Réseaux personnalisés

gcloud

Si vous souhaitez utiliser un réseau personnalisé, suivez les étapes d'importation d'un fichier OVA ou d'importation d'un fichier OVF dans l'outil de ligne de commande gcloud en spécifiant l'option --network. Si le réseau est configuré en mode sous-réseau personnalisé, vous devez également spécifier les options --subnet et --zone.

Exemple 1 : Utiliser un réseau personnalisé

Par exemple, considérons les propriétés suivantes :

  • Nom de la VM : my-instance
  • Réseau : custom-vpc-network
  • Sous-réseau : company-vpc-us-east1-c
  • Zone : us-east1-c

Exécutez la commande suivante pour importer une instance dotée des propriétés ci-dessus. Remplacez SERVICE_PROJECT_ID par l'ID du projet dans lequel vous souhaitez importer le dispositif virtuel.

gcloud compute instances import my-instance \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --project SERVICE_PROJECT_ID \
    --network custom-vpc-network \
    --subnet company-vpc-us-east1-c \
    --zone us-east1-c

Exemple 2 : Utiliser un réseau personnalisé (VPC partagé)

Par exemple, considérons les propriétés suivantes :

  • Nom de la VM : my-instance-2
  • Réseau : my-shared-vpc
  • Sous-réseau : my-shared-subnet
  • Zone : us-east1-c

Pour importer une VM dotée des propriétés ci-dessus, procédez comme suit :

  1. Ajoutez 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.

  2. Importez la VM.

    gcloud compute instances import my-instance-2 \
       --source-uri gs://my-bucket/Ubuntu.ova \
       --project SERVICE_PROJECT_ID \
       --network projects/HOST_PROJECT_ID/global/networks/my-shared-vpc \
       --subnet projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet
       --zone us-east1-c
    

    Remplacez les éléments suivants :

    • SERVICE_PROJECT_ID : ID du projet dans lequel vous souhaitez importer le dispositif virtuel.
    • HOST_PROJECT_ID : ID du projet dans lequel se trouve le VPC partagé.

API

Pour utiliser un réseau personnalisé, suivez les étapes de l'API Cloud Build pour importer un fichier OVA ou importer un fichier OVF et spécifiez un argument -network. Si le réseau est configuré en mode sous-réseau personnalisé, vous devez également spécifier les arguments -subnet et -zone.

Exemple : Utiliser un réseau personnalisé

Par exemple, considérons les propriétés suivantes :

  • Nom de la VM : my-instance
  • Réseau : custom-vpc-network
  • Sous-réseau : company-vpc-us-east1-c
  • Zone : us-east1-c

Créez la requête POST suivante pour importer une instance possédant les propriétés ci-dessus. Remplacez SERVICE_PROJECT_ID par l'ID du projet dans lequel vous souhaitez importer le dispositif virtuel.

POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-instance-names=my-instance",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-zone=us-east1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":[
    "gce-ovf-import"
  ]
}

Exemple 2 : Utiliser un réseau personnalisé (VPC partagé)

Par exemple, considérons les propriétés suivantes :

  • Nom de la VM : my-instance-2
  • Réseau : my-shared-vpc
  • Sous-réseau : my-shared-subnet
  • Zone : us-east1-c

Pour importer une VM dotée des propriétés ci-dessus, procédez comme suit :

  1. Ajoutez 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.

  2. Créez la requête POST suivante pour importer la VM.

    POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
    {
     "timeout":"7200s",
     "steps":[
       {
         "args":[
           "-instance-names=my-instance-2",
           "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
           "-zone=us-east1-c",
           "-network=projects/HOST_PROJECT_ID/global/networks/my-shared-vpc",
           "-subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Remplacez les éléments suivants :

    • SERVICE_PROJECT_ID : ID du projet dans lequel vous souhaitez importer le dispositif virtuel.
    • HOST_PROJECT_ID : ID du projet dans lequel se trouve le VPC partagé.

Importer une VM à l'aide de réseaux n'autorisant pas les adresses IP externes

Pour importer une VM à l'aide de réseaux n'autorisant pas les adresses IP externes, procédez comme suit :

  1. Ajoutez le dispositif virtuel dans Cloud Storage.

  2. Le processus d'importation nécessite que les gestionnaires de packages soient installés sur le système d'exploitation de la VM. 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 obtenir des instructions détaillées, consultez la page Configurer l'accès privé à Google.

  4. Importez la VM à l'aide de l'outil de ligne de commande gcloud ou de l'API Cloud Build.

    Lorsque la VM est créée à partir d'un dispositif 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

Pour importer un dispositif virtuel de Cloud Storage vers Compute Engine, exécutez la commande gcloud compute instances import avec l'option --no-address.

gcloud compute instances import VM_NAME \
    --source-uri=SOURCE_URI \
    --zone=ZONE \
    --no-address

Remplacez l'élément suivant :

  • VM_NAME : le nom de l'instance que vous souhaitez créer.
  • SOURCE_URI : l'URI de votre fichier OVA ou OVF sur Cloud Storage. Exemple : gs://my-bucket/Ubuntu.ova.
  • ZONE : la zone dans laquelle créer le dispositif virtuel. Si vous ne renseignez pas ce champ, la zone par défaut du projet est utilisée.

API

Vous pouvez importer une VM sans adresse IP externe à l'aide de l'API Cloud Build, en définissant une valeur de remplacement pour l'adresse IP externe.

Pour remplacer les paramètres d'adresse IP externe spécifiés dans le fichier OVF, suivez les étapes de l'API Cloud Build pour importer un fichier OVA ou importer un fichier OVF et spécifiez l'argument -no-external-ip.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-instance-names=VM_NAME",
        "-ovf-gcs-path=SOURCE_FILE",
        "-no-external-ip",
        "-zone=ZONE",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":[
    "gce-ovf-import"
  ]
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID du projet dans lequel vous souhaitez importer l'image.
  • VM_NAME : nom de la VM à créer.
  • SOURCE_FILE : URI de l'image dans Cloud Storage. Exemple :gs://my-bucket/Ubuntu.ova
  • 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 fichier OVA avec un bootloader UEFI

Pour importer un fichier OVA avec un bootloader UEFI, utilisez l'API Cloud Build et spécifiez l'argument -uefi-compatible.

  1. Importez le dispositif virtuel dans Cloud Storage.

  2. Dans l'API, créez une requête POST auprès de l'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-instance-names=VM_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-uefi-compatible",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Remplacez l'élément suivant :

    • PROJECT_ID : l'ID du projet dans lequel vous souhaitez importer le fichier OVA.
    • VM_NAME : le nom de l'instance de machine virtuelle à créer. Exemple : my-instance.
    • SOURCE_URI : l'URI du fichier OVA stocké dans Cloud Storage. Exemple : gs://my-bucket/my-instance.ova.
    • ZONE : la zone dans laquelle créer l'instance de VM. Si vous ne renseignez pas ce champ, la zone par défaut du projet est utilisée.

Importer un dispositif virtuel à l'aide de comptes de service personnalisés

Lors de l'importation de dispositifs virtuels, des instances de machine virtuelle (VM) temporaires sont créées dans votre projet. L'outil d'importation sur 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 sur la VM.

Par défaut, le processus d'importation utilise le compte de service Compute Engine par défaut. 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 dispositif 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

    Ces rôles minimaux sont nécessaires pour le compte de service spécifié pour l'option --compute-service-account. Pour plus d'informations, consultez la section Attribuer les rôles requis au compte de service Compute Engine.

  3. Utilisez la commande gcloud compute instances import pour importer le dispositif virtuel.

    gcloud compute instances import VM_NAME \
    --source-uri=SOURCE_URI \
    --zone=ZONE \
    --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --scopes=SCOPES
    

    Remplacez l'élément suivant :

    • VM_NAME : le nom de l'instance que vous souhaitez créer.
    • SOURCE_URI : l'URI de votre fichier OVA ou OVF sur Cloud Storage. Exemple : gs://my-bucket/Ubuntu.ova.
    • ZONE : la zone dans laquelle créer le dispositif virtuel. Si vous ne renseignez pas ce champ, la zone par défaut du projet est utilisée.
    • TEMP_SERVICE_ACCOUNT_EMAIL : adresse e-mail associée au compte de service personnalisé créé à l'étape précédente. Ce compte de service est utilisé par les VM temporaires. S'il n'est pas spécifié la VM utilise le compte de service Compute Engine par défaut.
    • SERVICE_ACCOUNT_EMAIL : adresse e-mail associée au compte de service personnalisé qui doit être associé à la VM créée par le processus d'importation. Il n'existe aucune restriction d'autorisations pour ce compte de service. Vous pouvez le personnaliser si nécessaire. S'il n'est pas spécifié, le compte de service Compute Engine par défaut est associé à la VM.
    • SCOPES : spécifiez le niveau d'accès de l'option --service-account. Si aucune valeur n'est spécifiée, les champs d'application par défaut sont utilisés. Pour en savoir plus, consultez la section concernant l'option --scopes.

API

  1. Ajoutez le dispositif 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

    Ces rôles minimaux sont nécessaires pour le compte de service spécifié pour l'argument -compute-service-account. Pour plus d'informations, consultez la section Attribuer les rôles requis au compte de service Compute Engine.

  3. Dans l'API, créez une requête POST auprès de l'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
      "timeout":"7200s",
      "steps":[
        {
          "args":[
            "-instance-names=VM_NAME",
            "-ovf-gcs-path=SOURCE_FILE",
            "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
            "-service-account=SERVICE_ACCOUNT_EMAIL",
            "-zone=ZONE",
            "-scopes=SCOPES",
            "-client-id=api",
            "-timeout=7000s"
          ],
          "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
          "env":[
            "BUILD_ID=$BUILD_ID"
          ]
        }
      ],
      "tags":[
        "gce-ovf-import"
      ]
    }
    

    Remplacez l'élément suivant :

    • PROJECT_ID : ID du projet dans lequel vous souhaitez importer l'image.
    • VM_NAME : nom de la VM à créer.
    • SOURCE_FILE : URI de l'image dans Cloud Storage. Exemple :gs://my-bucket/Ubuntu.ova
    • 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.
    • TEMP_SERVICE_ACCOUNT_EMAIL : adresse e-mail associée au compte de service personnalisé créé à l'étape précédente. Ce compte de service est utilisé par les VM temporaires. S'il n'est pas spécifié la VM utilise le compte de service Compute Engine par défaut.
    • SERVICE_ACCOUNT_EMAIL : adresse e-mail associée au compte de service personnalisé qui doit être associé à la VM créée par le processus d'importation. Il n'existe aucune restriction d'autorisations pour ce compte de service. Vous pouvez le personnaliser si nécessaire. S'il n'est pas spécifié, le compte de service Compute Engine par défaut est associé à la VM.
    • SCOPES : spécifiez le niveau d'accès de l'option -service-account. Si aucune valeur n'est spécifiée, les champs d'application par défaut sont utilisés. Pour en savoir plus, consultez la section concernant l'option --scopes.

Étape suivante