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

Activer l'API Cloud Build

L'outil d'importation du dispositif virtuel utilise Cloud Build.

Dans la plupart des cas, gcloud compute instances import tente d'accorder ces autorisations au compte de service Cloud Build. Toutefois, vous pouvez accorder manuellement ces autorisations pour vous assurer que les autorisations requises sont en vigueur.

Console

  1. Activez l'API Cloud Build.

    Activer l'API Cloud Build

    Lorsque vous activez l'API Cloud Build depuis la console, Compute Engine accorde au compte de service Cloud Build les rôles suivants, de sorte que le service Cloud Build puisse importer des instances vers Compute Engine :

    • roles/iam.serviceAccountTokenCreator
    • roles/compute.admin
    • roles/iam.serviceAccountUser

    L'outil d'importation utilise également le compte de service Compute Engine par défaut, qui dispose par défaut du rôle IAM d'éditeur de projet. Si ce rôle est retiré, le processus d'importation peut échouer. Pour attribuer de nouveau le rôle au compte de service, consultez la section Accorder l'accès. Pour plus d'informations sur le compte de service par défaut Compute Engine, consultez la section Compte de service Compute Engine par défaut.

gcloud

Pour configurer le service Cloud Build à l'aide de l'outil de ligne de commande gcloud, procédez comme suit :

  1. Activez Cloud Build.

    gcloud services enable cloudbuild.googleapis.com

    L'outil d'importation utilise également le compte de service Compute Engine par défaut, qui dispose par défaut du rôle IAM d'éditeur de projet. Si ce rôle est retiré, le processus d'importation peut échouer. Pour attribuer de nouveau le rôle au compte de service, consultez la section Accorder l'accès. Pour plus d'informations sur le compte de service par défaut Compute Engine, consultez la section Compte de service Compute Engine par défaut.

  2. Ajoutez le rôle compute.admin au compte de service de l'API Cloud Build.

    gcloud projects add-iam-policy-binding project-id \
       --member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
       --role roles/compute.admin
    
  3. Ajoutez le rôle iam.serviceAccountUser au compte de service de l'API Cloud Build.

    gcloud projects add-iam-policy-binding project-id \
       --member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountUser
    
  4. Ajoutez le rôle iam.serviceAccountTokenCreator au compte de service de l'API Cloud Build.

    gcloud projects add-iam-policy-binding project-id \
       --member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountTokenCreator
    

    Remplacez les éléments suivants :

    • project-id : ID de votre projet
    • project-num : le numéro de votre projet

Exigences

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 respecter le niveau de 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.

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

Limites

  • 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

Systèmes d'exploitation compatibles

Spécifiez le système d'exploitation dans la section OperatingSystemSection de votre fichier descripteur ou en utilisant l'option --os lors de l'importation à 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.

Pour importer des dispositifs en tant que dispositifs sous licence BYOL, spécifiez les valeurs BYOL appropriées pour l'option [--os] lorsque vous exécutez la commande gcloud compute instances import.

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 INSTANCE_NAME \
       --source-uri=gs:PATH_TO_OVA_FILE
    

    Remplacez les éléments suivants :

    • INSTANCE_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
    

    Dans certains cas, une valeur peut vous être demandée pour le système d'exploitation. Pour spécifier le système d'exploitation, vous devez ajouter 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":"TIMEOUT",
     "steps":[
       {
         "args":[
           "-instance-names=INSTANCE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=TIMEOUT"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID : l'ID du projet dans lequel vous souhaitez importer le fichier OVA.
    • TIMEOUT : le délai maximal pour une compilation, au-delà duquel elle échoue avec un message TIMEOUT. Dans l'API, ce délai doit être spécifié en secondes. Une valeur de 7200s pour le délai d'expiration devrait fonctionner dans la plupart des scénarios.
    • INSTANCE_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.
    • OS : le système d'exploitation du fichier OVA. Par exemple, ubuntu-1604. Cette option est par défaut facultative, mais elle peut être obligatoire dans certains cas. Nous vous recommandons de la renseigner. 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 à 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",
              "-os=rhel-6",
              "-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/gcr/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 INSTANCE_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 INSTANCE_NAME \
       --source-uri=gs:PATH_TO_OVF_DIRECTORY
      

    Remplacez les éléments suivants :

    • INSTANCE_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
      

      Dans certains cas, une valeur peut vous être demandée pour le système d'exploitation. Pour spécifier le système d'exploitation, vous devez ajouter 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":"TIMEOUT",
     "steps":[
       {
         "args":[
           "-instance-names=INSTANCE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=TIMEOUT"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID : l'ID du projet dans lequel vous souhaitez importer le fichier OVA.
    • TIMEOUT : le délai maximal pour une compilation, au-delà duquel elle échoue avec un message TIMEOUT. Dans l'API, ce délai doit être spécifié en secondes. Une valeur de 7200s pour le délai d'expiration devrait fonctionner dans la plupart des scénarios.
    • INSTANCE_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. Par exemple, ubuntu-1604. Cette option est par défaut facultative, mais elle peut être obligatoire dans certains cas. Nous vous recommandons de la renseigner. 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/gcr/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 exécutant Ubuntu 1404 et disposant de deux processeurs et de 2 048 Mo de mémoire, exécutez la commande suivante :

gcloud compute instances import my-instance \
    --os=ubuntu-1404 --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 exécutant Ubuntu 1404 et 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",
        "-os=ubuntu-1404",
        "-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
  • Système d'exploitation : Ubuntu 1404
  • 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 \
    --os ubuntu-1404 \
    --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
  • Système d'exploitation : Ubuntu 1404
  • 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 de l'API Cloud Build.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member serviceAccount:SERVICE_PROJECT_NUM@cloudbuild.gserviceaccount.com \
      --role roles/compute.networkUser
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet dans lequel se trouve le VPC partagé.
    • SERVICE_PROJECT_NUM : numéro du projet dans lequel vous souhaitez importer le dispositif virtuel.
  2. Importez la VM.

    gcloud compute instances import my-instance-2 \
       --os ubuntu-1404 \
       --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
  • Système d'exploitation : Ubuntu 1404
  • 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",
        "-os=ubuntu-1404",
        "-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
  • Système d'exploitation : Ubuntu 1404
  • 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 de l'API Cloud Build.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member serviceAccount:SERVICE_PROJECT_NUM@cloudbuild.gserviceaccount.com \
      --role roles/compute.networkUser
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet dans lequel se trouve le VPC partagé.
    • SERVICE_PROJECT_NUM : numéro du projet dans lequel vous souhaitez importer le dispositif virtuel.
  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",
           "-os=ubuntu-1404",
           "-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 sans adresse IP externe

Pour importer une VM sans adresse IP externe, vous devez utiliser l'API Cloud Build.

  1. Ajoutez le dispositif virtuel dans Cloud Storage.

  2. Configurez l'accès privé à Google. Pour obtenir des instructions détaillées, consultez la page Configurer l'accès privé à Google.

  3. Importez la VM avec 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.

    Exemple

    Par exemple, pour importer une instance nommée my-instance qui exécute Ubuntu 1404 et n'a pas d'adresse IP externe, 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",
            "-os=ubuntu-1404",
            "-no-external-ip",
            "-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"
      ]
    }
    

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":"TIMEOUT",
     "steps":[
       {
         "args":[
           "-instance-names=INSTANCE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-uefi-compatible",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=TIMEOUT"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID : l'ID du projet dans lequel vous souhaitez importer le fichier OVA.
    • TIMEOUT : le délai maximal pour une compilation, au-delà duquel elle échoue avec un message TIMEOUT. Dans l'API, ce délai doit être spécifié en secondes. Une valeur de 7200s pour le délai d'expiration devrait fonctionner dans la plupart des scénarios.
    • INSTANCE_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.
    • OS : le système d'exploitation du fichier OVA. Par exemple, ubuntu-1604. Cette option est par défaut facultative, mais elle peut être obligatoire dans certains cas. Nous vous recommandons de la renseigner. 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.

Étapes suivantes