Importa dispositivos virtuales


Un dispositivo virtual es un paquete que contiene imágenes de disco y una configuración de hardware para una instancia de máquina virtual (VM).

El formato OVF es un formato para dispositivos virtuales muy usado y popular. Cuando empaquetas dispositivos virtuales en el formato OVF, se genera un paquete OVF. Un paquete OVF es una carpeta que contiene un archivo descriptor .ovf y una colección de otros recursos, como discos. Cuando un paquete OVF se archiva en un archivo único, se lo denomina archivo OVA.

Puedes importar VM que estén en formato OVF a Compute Engine, ya sea que estén en un paquete OVF o en un archivo único OVA. Para verificar si el uso de un dispositivo virtual es la mejor opción en tu caso práctico, consulta Elige un método de importación.

Cuando importas un dispositivo virtual, el proceso de importación usa la información almacenada en el archivo descriptor para crear y, luego, iniciar una VM en Compute Engine.

En Compute Engine, puedes importar archivos OVA o archivos OVF de la siguiente manera:

Antes de comenzar

Habilita la API de Cloud Build

La herramienta de importación de dispositivos virtuales usa Cloud Build.

En la mayoría de los casos, gcloud compute instances import intenta otorgar estos permisos a la cuenta de servicio de Cloud Build. Sin embargo, puedes otorgarlos de forma manual para asegurarte de que los permisos obligatorios estén en vigor.

Console

  1. Habilita la API de Cloud Build.

    Habilitar la API de Cloud Build

    Cuando habilitas la API de Cloud Build desde Console, Compute Engine le otorga las siguientes funciones a la cuenta de servicio de Cloud Build para que el servicio de Cloud Build pueda importar instancias a Compute Engine:

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

    La herramienta de importación también usa la cuenta de servicio predeterminada de Compute Engine. De forma predeterminada, la cuenta de servicio de Compute Engine tiene la función de editor de proyecto de IAM. Si se quita esta función, es posible que el proceso de importación falle. Para volver a agregar la función a la cuenta de servicio, consulta la página sobre cómo otorgar acceso. Para obtener más información sobre la cuenta de servicio predeterminada de Compute Engine, consulta Cuenta de servicio predeterminada de Compute Engine.

gcloud

Para configurar el servicio Cloud Build mediante la herramienta de línea de comandos de gcloud, completa los siguientes pasos:

  1. Habilita Cloud Build.

    gcloud services enable cloudbuild.googleapis.com

    La herramienta de importación también usa la cuenta de servicio predeterminada de Compute Engine. De forma predeterminada, la cuenta de servicio de Compute Engine tiene la función de editor de proyecto de IAM. Si se quita esta función, es posible que el proceso de importación falle. Para volver a agregar la función a la cuenta de servicio, consulta la página sobre cómo otorgar acceso. Para obtener más información sobre la cuenta de servicio predeterminada de Compute Engine, consulta Cuenta de servicio predeterminada de Compute Engine.

  2. Agrega la función compute.admin a la cuenta de servicio para la API de Cloud Build.

    gcloud projects add-iam-policy-binding project-id \
       --member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
       --role roles/compute.admin
    
  3. Agrega la función iam.serviceAccountUser a la cuenta de servicio para la API de Cloud Build.

    gcloud projects add-iam-policy-binding project-id \
       --member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountUser
    
  4. Agrega la función iam.serviceAccountTokenCreator a la cuenta de servicio para la API de Cloud Build.

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

    Reemplaza los siguientes elementos:

Requisitos

Requisitos de la VM de origen

La VM que se utiliza para crear el archivo OVF debe cumplir los siguientes requisitos:

  • Los discos virtuales deben estar en los formatos VMDK o VHD.
  • Los discos virtuales no deben estar encriptados.

    Para verificar que la VM cumple con los requisitos, puedes ejecutar la herramienta de comprobación previa.

El sistema operativo de la VM de origen debe cumplir con los siguientes requisitos:

  • Para todos los sistemas operativos de Windows, se debe instalar PowerShell versión 3 o posterior. Las versiones anteriores a la versión 3.0 de PowerShell pueden causar problemas con las secuencias de comandos de inicio y cierre usadas durante el proceso de importación.
  • Para todas las distribuciones de Linux, el disco de arranque debe cumplir con los siguientes requisitos:

    • El disco de arranque debe tener GRUB instalado.
    • El disco de arranque no debe abarcar varios discos físicos. No se admite un disco particionado mediante un Administrador de volúmenes lógicos (LVM). Si el disco abarca varios discos físicos, es posible que la VM creada a partir del archivo OVF no se inicie en Compute Engine.

Requisitos del archivo OVF

El archivo OVF debe cumplir los siguientes requisitos:

  • Los archivos OVF deben proporcionar la portabilidad Level 1 como se describe en el documento de especificación de OVF. Se pueden importar los dispositivos virtuales que cumplen con la portabilidad Level 2, pero cualquier extensión personalizada, como los detalles específicos del hipervisor de origen, se ignora durante el proceso de importación.
  • El archivo OVF debe contener solo una VM. Si hay más de una VM presente, solo se importa la primera.
  • El primer disco del archivo OVF se debe poder iniciar.

Configuración importada por la herramienta

El estándar OVF especifica el proceso para empaquetar dispositivos virtuales de una manera que no depende del proveedor de virtualización. Los paquetes de dispositivos virtuales OVF contienen un archivo descriptor .ovf y una colección de otros recursos, como discos virtuales.

Cuando importas un dispositivo virtual OVF a Compute Engine, se procesa y se importa la siguiente configuración del archivo descriptor:

  • Discos virtuales. Información recuperada del elemento DiskSection del paquete OVF.
  • CPU y memoria. Recuperadas de ResourceAllocationSection del paquete OVF.

    Si las configuraciones de CPU o memoria están fuera de los límites del rango admitido en Compute Engine, en el proceso de importación, se establecen los valores al máximo admitido en Compute Engine.

  • Disco de arranque. Detalles recuperados de BootDeviceSection del paquete OVF.

  • SO invitado. Detalles recuperados del elemento OperatingSystemSection del paquete OVF.

    La información del SO invitado se usa para instalar los controladores correctos y los paquetes del entorno invitado en la instancia importada. Si la información del SO invitado que se encuentra en el OVF es incorrecta, la importación falla. Puedes usar la marca --os para anular la información del SO invitado.

Las instancias importadas siempre se crean con un adaptador de red único con una dirección IP externa. Este adaptador de red único se usa sin importar la configuración de red especificada en el archivo OVF. Para importar una VM sin dirección IP externa, consulta la sección sobre cómo importar una VM sin dirección IP externa.

Limitaciones

  • Cuando se importa un dispositivo virtual, las siguientes secciones del archivo descriptor se ignoran (no se importan):

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

Sistemas operativos compatibles

Especifica el sistema operativo en la OperatingSystemSection de tu archivo descriptor o mediante la opción de marca --os cuando realices la importación con el comando gcloud compute instances import.

Para obtener información sobre los sistemas operativos compatibles, consulta Detalles de los sistemas operativos.

Compatibilidad con BYOL y BYOS

De forma predeterminada, los archivos OVF que usan sistemas operativos Windows Server y Red Hat Enterprise Linux (RHEL) se importan y configuran para usar la facturación según demanda de SO premium, lo que conlleva cargos adicionales.

Si prefieres usar tu propia licencia de software o suscripción a este, puedes importar tus dispositivos virtuales con sus licencias. Para obtener información sobre los sistemas operativos compatibles con BYOL o BYOS, consulta Detalles de los sistemas operativos.

Para importar dispositivos virtuales como dispositivos con licencia BYOL, especifica los valores de BYOL apropiados para la marca [--os] cuando ejecutes el comando “gcloud compute instances import”.

Importa un archivo OVA

gcloud

  1. Sube el dispositivo virtual a Cloud Storage.
  2. Para importar un archivo OVA de Cloud Storage a Compute Engine, usa el comando gcloud compute instances import.

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

    Reemplaza los siguientes elementos:

    • INSTANCE_NAME: El nombre de la instancia que deseas crear
    • PATH_TO_OVA_FILE: La ruta de acceso al archivo OVA de Cloud Storage

    Ejemplos

    Por ejemplo, para importar un archivo OVA Ubuntu.ova y crear una instancia llamada my-instance, ejecuta el siguiente comando:

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

    En algunos casos, es posible que se te solicite que proporciones un valor para el SO. Para especificar el sistema operativo, debes agregar la marca --os. Si deseas obtener una lista de los valores admitidos, revisa las opciones de la marca --os para el comando gcloud compute instances import.

    Por ejemplo, para importar un archivo OVA Ubuntu.ova y crear una instancia llamada my-instance que ejecute Ubuntu 16.04, ejecuta el siguiente comando:

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

API

  1. Sube el dispositivo virtual a Cloud Storage.

  2. En la API, crea una solicitud POST a la API de 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"
     ]
    }
    

    Reemplaza los siguientes elementos:

    • PROJECT_ID: El ID del proyecto en el que deseas importar el archivo OVA
    • TIMEOUT: El tiempo máximo que debería durar una compilación antes de que falle con un mensaje TIMEOUT. En la API, la hora debe especificarse en segundos. Un valor de tiempo de espera de 7200s debería funcionar en la mayoría de los casos
    • INSTANCE_NAME: El nombre de la instancia de máquina virtual que se creará. Por ejemplo, my-instance
    • SOURCE_URI: El URI del archivo OVA que se almacena en Cloud Storage. Por ejemplo, gs://my-bucket/my-instance.ova
    • OS: El sistema operativo del archivo OVA. Por ejemplo, ubuntu-1604. De forma predeterminada, esta marca es opcional, pero se podría necesitar en algunos casos. Te recomendamos que proporciones esta marca. Si deseas obtener una lista de los valores admitidos, revisa las opciones de la marca --os para el comando gcloud compute instances import
    • ZONE: La zona en la que se creará la instancia de VM. Si se deja en blanco, se usa la zona predeterminada del proyecto

    Para obtener valores args adicionales que se puedan aprovisionar, consulta la sección de marcas opcionales en la página sobre importación de OVF de Compute Engine en GitHub.

    Respuesta de ejemplo

    Esta respuesta de ejemplo es similar al siguiente resultado que se muestra:

    {
    "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"
        ]
      }
    }
    }
    

    Para supervisar tu compilación, puedes usar uno de los siguientes métodos:

    • Ejecuta una solicitud projects.builds.get mediante el build-id que se mostró.
    • Revisa los registros alojados en el logUrl proporcionado.

Importa un archivo OVF

gcloud

  1. Sube el dispositivo virtual a Cloud Storage.
  2. Para importar un archivo OVF de Cloud Storage a Compute Engine, usa el comando gcloud compute instances import.

    Si tu directorio contiene un solo archivo OVF, puedes proporcionar la ruta de acceso al archivo descriptor o al directorio que contiene el archivo OVF.

    • Para importar un archivo OVF mediante la ruta de acceso al archivo descriptor, ejecuta el siguiente comando:

      gcloud compute instances import INSTANCE_NAME \
       --source-uri=gs:PATH_TO_OVF_FILE
      
    • Para importar un archivo OVF con la ruta de acceso al directorio, ejecuta el siguiente comando:

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

    Reemplaza los siguientes elementos:

    • INSTANCE_NAME: El nombre de la instancia que se creará
    • PATH_TO_OVF_FILE: La ruta de acceso al archivo OVF en Cloud Storage
    • PATH_TO_OVF_DIRECTORY: La ruta de acceso al directorio que contiene el archivo OVF en Cloud Storage.

    Ejemplos

    • Para importar un archivo OVF Ubuntu.ovf desde el directorio my-ovf-directory que crea una instancia llamada my-instance, ejecuta el siguiente comando:

      gcloud compute instances import my-instance \
       --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
      
    • Para importar un archivo OVF desde el directorio my-ovf-directory que crea una instancia llamada my-instance, ejecuta el siguiente comando:

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

      En algunos casos, es posible que se te solicite que proporciones un valor para el SO. Para especificar el sistema operativo, debes agregar la marca --os. Si deseas obtener una lista de los valores admitidos, revisa las opciones de la marca --os para el comando gcloud compute instances import. Por ejemplo, para importar un archivo OVF Ubuntu.ovf y crear una instancia llamada my-instance que ejecute Ubuntu 16.04, ejecuta el siguiente comando:

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

API

  1. Agrega el dispositivo virtual a Cloud Storage.

  2. En la API, crea una solicitud POST a la API de 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"
     ]
    }
    

    Reemplaza los siguientes elementos:

    • PROJECT_ID: El ID del proyecto en el que deseas importar el archivo OVA
    • TIMEOUT: El tiempo máximo que debería durar una compilación antes de que falle con un mensaje TIMEOUT. En la API, la hora debe especificarse en segundos. Un valor de tiempo de espera de 7200s debería funcionar en la mayoría de los casos
    • INSTANCE_NAME: El nombre de la instancia de máquina virtual que se creará. Por ejemplo, my-instance
    • SOURCE_URI: El URI del archivo OVF que se almacena en Cloud Storage. Por ejemplo, gs://my-bucket/my-instance.ovf
    • OS: El sistema operativo del archivo OVF. Por ejemplo, ubuntu-1604. De forma predeterminada, esta marca es opcional, pero se podría necesitar en algunos casos. Te recomendamos que proporciones esta marca. Si deseas obtener una lista de los valores admitidos, revisa las opciones de la marca --os para el comando gcloud compute instances import
    • ZONE: La zona en la que se creará la instancia de VM. Si se deja en blanco, se usa la zona predeterminada del proyecto

    Para obtener valores args adicionales que se puedan aprovisionar, consulta la sección de marcas opcionales en la página sobre importación de OVF de Compute Engine en GitHub.

    Respuesta de ejemplo

    El resultado muestra una respuesta similar al siguiente ejemplo:

    {
    "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"
        ]
      }
    }
    }
    

    Puedes supervisar tu compilación de las siguientes dos maneras:

    • Ejecuta una solicitud projects.builds.get mediante el build-id que se mostró.
    • Revisa los registros alojados en el logUrl proporcionado.

Realiza importaciones con configuración personalizada

CPU y memoria personalizadas

gcloud

A fin de anular la configuración de CPU o de memoria especificada en el archivo OVF, sigue los pasos de la herramienta de línea de comandos de gcloud para importar un archivo OVA o importar un archivo OVF y especifica las marcas --custom-cpu y --custom-memory.

Ejemplo

Por ejemplo, para importar una instancia llamada my-instance que ejecuta Ubuntu 1404 y tiene 2 CPU y 2048 MB de memoria, ejecuta el siguiente comando:

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

API

A fin de anular la configuración de CPU o de memoria especificada en el archivo OVF, sigue los pasos de la API de Compute Build para importar un archivo OVA o importar un archivo OVF y especifica el argumento -machine-type. Este -machine-type representa un tipo de máquina predefinido o personalizado para usar.

Ejemplo

Por ejemplo, para importar una instancia llamada my-instance que ejecuta Ubuntu 1404 y tiene 2 CPU y 2048 MB de memoria, usa la siguiente solicitud: Reemplaza PROJECT_ID por el ID del proyecto.

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"
  ]
}

Redes personalizadas

gcloud

A fin de usar una red personalizada, sigue los pasos de la herramienta de línea de comandos de gcloud para importar un archivo OVA o importar un archivo OVF y especifica una marca --network. Si la red está configurada con un modo de subred personalizado, también debes especificar las marcas --subnet y --zone.

Ejemplo 1: Usa una red personalizada

Por ejemplo, considera las siguientes propiedades:

  • Nombre de la VM: my-instance
  • Sistema operativo: Ubuntu 1404
  • Red: custom-vpc-network
  • Subred: company-vpc-us-east1-c
  • Zona: us-east1-c

Ejecuta el siguiente comando para importar una instancia con las propiedades anteriores. Reemplaza SERVICE_PROJECT_ID por el ID del proyecto al que deseas importar el dispositivo virtual.

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

Ejemplo 2: Usa una red personalizada (VPC compartida)

Por ejemplo, considera las siguientes propiedades:

  • Nombre de la VM: my-instance-2
  • Sistema operativo: Ubuntu 1404
  • Red: my-shared-vpc
  • Subred: my-shared-subnet
  • Zona: us-east1-c

Para importar una VM con las propiedades anteriores, completa los siguientes pasos:

  1. Agrega la función compute.networkUser a la cuenta de servicio para la API de Cloud Build.

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

    Reemplaza los siguientes elementos:

    • HOST_PROJECT_ID: Es el ID del proyecto en el que se encuentra la VPC compartida.
    • SERVICE_PROJECT_NUM: Es el número del proyecto al que deseas importar el dispositivo virtual.
  2. Importa 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
    

    Reemplaza los siguientes elementos:

    • SERVICE_PROJECT_ID: Es el ID del proyecto al que deseas importar el dispositivo virtual
    • HOST_PROJECT_ID: Es el ID del proyecto en el que se encuentra la VPC compartida.

API

A fin de usar una red personalizada, sigue los pasos de la API de Compute Build para importar un archivo OVA o importar un archivo OVF y especifica un argumento -network. Si la red está configurada con un modo de subred personalizado, también debes especificar los argumentos -subnet y -zone.

Ejemplo: Usa una red personalizada

Por ejemplo, considera las siguientes propiedades:

  • Nombre de la VM: my-instance
  • Sistema operativo: Ubuntu 1404
  • Red: custom-vpc-network
  • Subred: company-vpc-us-east1-c
  • Zona: us-east1-c

Crea la siguiente solicitud POST para importar una instancia con las propiedades anteriores. Reemplaza SERVICE_PROJECT_ID por el ID del proyecto al que deseas importar el dispositivo virtual.

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"
  ]
}

Ejemplo 2: Usa una red personalizada (VPC compartida)

Por ejemplo, considera las siguientes propiedades:

  • Nombre de la VM: my-instance-2
  • Sistema operativo: Ubuntu 1404
  • Red: my-shared-vpc
  • Subred: my-shared-subnet
  • Zona: us-east1-c

Para importar una VM con las propiedades anteriores, completa los siguientes pasos:

  1. Agrega la función compute.networkUser a la cuenta de servicio para la API de Cloud Build.

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

    Reemplaza los siguientes elementos:

    • HOST_PROJECT_ID: Es el ID del proyecto en el que se encuentra la VPC compartida.
    • SERVICE_PROJECT_NUM: Es el número del proyecto al que deseas importar el dispositivo virtual.
  2. Crea la siguiente solicitud POST para importar 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"
     ]
    }
    

    Reemplaza los siguientes elementos:

    • SERVICE_PROJECT_ID: Es el ID del proyecto al que deseas importar el dispositivo virtual.
    • HOST_PROJECT_ID: Es el ID del proyecto en el que se encuentra la VPC compartida.

Importa una VM sin dirección IP externa

Para importar una VM sin IP externa, debes usar la API de Cloud Build.

  1. Agrega el dispositivo virtual a Cloud Storage.

  2. Configura el Acceso privado a Google. Para obtener instrucciones detalladas, consulta la sección sobre cómo configurar el acceso privado a Google.

  3. Importa la VM con una anulación para la IP externa.

    Para anular la configuración de IP externa especificada en el archivo OVF, sigue los pasos de la API de Cloud Build para importar un archivo OVA o importar un archivo OVF y especifica el argumento -no-external-ip.

    Ejemplo

    Por ejemplo, para importar una instancia llamada my-instance que ejecute Ubuntu 1404 y no tenga una IP externa, usa la siguiente solicitud. Reemplaza PROJECT_ID por el ID del proyecto.

    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"
      ]
    }
    

Importa un archivo OVA con un bootloader de UEFI

Puedes importar un archivo OVA con un bootloader de UEFI mediante la API de Cloud Build y si especificas el argumento -uefi-compatible.

  1. Sube el dispositivo virtual a Cloud Storage.

  2. En la API, crea una solicitud POST a la API de 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"
     ]
    }
    

    Reemplaza los siguientes elementos:

    • PROJECT_ID: El ID del proyecto en el que deseas importar el archivo OVA
    • TIMEOUT: El tiempo máximo que debería durar una compilación antes de que falle con un mensaje TIMEOUT. En la API, la hora debe especificarse en segundos. Un valor de tiempo de espera de 7200s debería funcionar en la mayoría de los casos
    • INSTANCE_NAME: El nombre de la instancia de máquina virtual que se creará. Por ejemplo, my-instance
    • SOURCE_URI: El URI del archivo OVA que se almacena en Cloud Storage. Por ejemplo, gs://my-bucket/my-instance.ova
    • OS: El sistema operativo del archivo OVA. Por ejemplo, ubuntu-1604. De forma predeterminada, esta marca es opcional, pero se podría necesitar en algunos casos. Te recomendamos que proporciones esta marca. Si deseas obtener una lista de los valores admitidos, revisa las opciones de la marca --os para el comando gcloud compute instances import
    • ZONE: La zona en la que se creará la instancia de VM. Si se deja en blanco, se usa la zona predeterminada del proyecto

Próximos pasos