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 una ruta de migració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

  • Si el proyecto en el que quieres importar el dispositivo virtual tiene una política de imágenes confiables definida, agrega projects/compute-image-import y projects/compute-image-tools a la lista de publicadores permitidos.
  • Si importas un dispositivo virtual desde un proyecto diferente, consulta Importa entre proyectos.
  • A fin de obtener información sobre cómo cumplir con los requisitos antes de importar imágenes, consulta Requisitos previos para importar y exportar imágenes de VM.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    REST

    Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Requisitos

En esta sección, se enumeran los requisitos para importar dispositivos virtuales a Compute Engine.

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 debe ser de inicio.

Permisos

Para habilitar una experiencia sin interrupciones cuando importas imágenes, asegúrate de haber otorgado las funciones de IAM necesarias a tu cuenta, a la cuenta de servicio de Cloud Build, y a la cuenta de servicio de Compute Engine. Para obtener más información, consulta Otorga funciones de IAM necesarias.

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

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

Limitaciones

Esta función no es compatible con los proyectos protegidos con los Controles del servicio de VPC.

Sistemas operativos compatibles

De manera opcional, puedes especificar el sistema operativo en el elemento OperatingSystemSection del archivo descriptor o especificar la marca --os cuando importes un dispositivo virtual mediante 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.

Puedes importar dispositivos como dispositivos con licencia BYOL mediante el gcloud compute instances import comando con la marca --byol. Si especificas el SO de forma manual, usa la marca --os a fin de especificar un valor que contenga el sufijo byol para el SO invitado que deseas importar. Por ejemplo, --os=rhel-8-byol importa una imagen de RHEL 8 con una licencia existente.

Importa entre proyectos

  • Proyecto de origen: el proyecto en el que se almacena el archivo OVF u OVA.
  • Proyecto de destino: el proyecto en el que deseas crear la VM o la imagen de máquina.

Si los proyectos de origen y de destino son diferentes, las cuentas de servicio del proyecto de destino necesitan acceso al bucket de Cloud Storage en el proyecto de origen.

Para importar entre proyectos, completa los siguientes pasos:

  1. En el proyecto de origen, ubica el bucket de Cloud Storage.
  2. En el bucket de Cloud Storage, otorga roles/storage.objectViewer a las siguientes cuentas de servicio:

    • Cuenta de servicio de Cloud Build para el proyecto de destino: esta cuenta de servicio tiene el formato DESTINATION_PROJECT_NUMBER@cloudbuild.gserviceaccount.com.
    • Cuenta de servicio de Compute Engine para el proyecto de destino: esta cuenta de servicio tiene el formato DESTINATION_PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    Reemplaza DESTINATION_PROJECT_NUMBER por el número del proyecto de destino.

    Para obtener instrucciones sobre cómo otorgar acceso a un bucket de Cloud Storage, consulta Agrega un principal a una política a nivel de bucket.

  3. Importa el dispositivo virtual o la imagen de máquina.

Importa dispositivos virtuales

Puedes importar tu dispositivo virtual mediante Google Cloud CLI o REST.

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

    Reemplaza lo siguiente:

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

    Si la información del SO invitado en el archivo descriptor OVF es incorrecta o si deseas anular el SO detectado, puedes agregar la marca --os para especificar el sistema operativo. 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
    

REST

  1. Sube el dispositivo virtual a Cloud Storage.

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

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto en el que deseas importar el archivo OVA
    • VM_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.
    • 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",
              "-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"
        ]
      }
    }
    }
    

    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 VM_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 VM_NAME \
       --source-uri=gs:PATH_TO_OVF_DIRECTORY
      

    Reemplaza lo siguiente:

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

      Si la información del SO invitado en el archivo descriptor OVF es incorrecta o si deseas anular el SO detectado, puedes agregar la marca --os para especificar el sistema operativo. 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
      

REST

  1. Agrega el dispositivo virtual a Cloud Storage.

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

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto en el que deseas importar el archivo OVA
    • VM_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. La marca --os es opcional de forma predeterminada, pero puedes estar marca para anular el SO detectado. 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/cloud-build/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 Google Cloud CLI 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 tiene 2 CPU y 2048 MB de memoria, ejecuta el siguiente comando:

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

REST

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 tenga 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",
        "-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

La red personalizada debe definirse en el mismo proyecto en el que importas la imagen.

gcloud

A fin de usar una red personalizada, sigue los pasos de Google Cloud CLI 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
  • 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 \
    --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
  • 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 el rol compute.networkUser a la cuenta de servicio de Cloud Build. Para obtener más información, consulta Otorga roles necesarios a la cuenta de servicio de Cloud Build.

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

    Reemplaza lo siguiente:

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

REST

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
  • 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",
        "-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
  • 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 el rol compute.networkUser a la cuenta de servicio de Cloud Build. Para obtener más información, consulta Otorga roles necesarios a la cuenta de servicio de Cloud Build.

  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",
           "-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 lo siguiente:

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

Importa una VM mediante redes que no permiten direcciones IP externas

Para importar una VM con redes que no permiten direcciones IP externas, completa los siguientes pasos:

  1. Agrega el dispositivo virtual a Cloud Storage.

  2. El proceso de importación requiere que se instalen administradores de paquetes en el sistema operativo de la VM. Es posible que estos administradores de paquetes deban realizar solicitudes a repositorios de paquetes que se encuentran fuera de Google Cloud. A fin de permitir el acceso a estas actualizaciones, debes configurar Cloud NAT. Para obtener más información, consulta Crea una configuración de NAT con Cloud Router.

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

  4. Importa la VM con Google Cloud CLI o REST.

    Cuando se crea una VM desde un dispositivo virtual, se crean VM temporales en tu proyecto. Para asegurarte de que no se les asignen direcciones IP externas a estas VM temporales, debes especificar una marca o argumento adicional.

    Para obtener más información, haz clic en las siguientes pestañas:

gcloud

Para importar un dispositivo virtual de Cloud Storage a Compute Engine, usa el comando gcloud compute instances import con la marca --no-address.

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

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la instancia que deseas crear.
  • SOURCE_URI: El URI para tu archivo OVA o OVF en Cloud Storage. Por ejemplo, gs://my-bucket/Ubuntu.ova.
  • ZONE: Es la zona en la que se creará el dispositivo virtual. Si se deja en blanco, se usa la zona predeterminada del proyecto

REST

Puedes importar una VM sin IP externa mediante la API de Cloud Build 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.

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

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto en el que deseas importar la imagen.
  • VM_NAME: Es el nombre de la VM que se creará.
  • SOURCE_FILE: El URI de la imagen en Cloud Storage. Por ejemplo, gs://my-bucket/Ubuntu.ova
  • ZONE: Es la zona en la que se creará la instancia. Si se deja en blanco, se usa la zona predeterminada del proyecto

Importa un archivo OVA con un bootloader de UEFI

gcloud

Puedes usar el comando gcloud compute instances import para forzar una importación a fin de usar el inicio de UEFI.

gcloud compute instances import VM_NAME \
  --source-uri=SOURCE_URI \
  --guest-os-features=UEFI_COMPATIBLE

Reemplaza lo siguiente:

  • VM_NAME: Es el nombre de la VM que deseas crear.
  • SOURCE_URI: El URI para tu archivo OVA o OVF en Cloud Storage. Por ejemplo, gs://my-bucket/Ubuntu.ova.

REST

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

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto en el que deseas importar el archivo OVA
    • VM_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.
    • ZONE: La zona en la que se creará la instancia de VM. Si se deja en blanco, se usa la zona predeterminada del proyecto

Importa un dispositivo virtual mediante cuentas de servicio personalizadas

Durante la importación de un dispositivo virtual, se crean instancias de máquina virtual (VM) temporales en tu proyecto. La herramienta de importación de imágenes de estas VM temporales debe autenticarse.

Una cuenta de servicio es una identidad que se adjunta a una VM. Se puede acceder a los tokens de acceso a la cuenta de servicio a través del servidor de metadatos de instancia y usarlos para autenticar la herramienta de importación de imágenes en la VM.

De forma predeterminada, el proceso de importación usa la cuenta de servicio predeterminada de Compute Engine. Sin embargo, si la cuenta de servicio predeterminada de Compute Engine está inhabilitada en tu proyecto o si quieres usar una cuenta de servicio de Compute Engine personalizada, debes crear una cuenta de servicio y especificarla para el proceso de importación.

gcloud

  1. Agrega el dispositivo virtual a Cloud Storage.

  2. Crea una cuenta de servicio y asigna las funciones mínimas. Si deseas obtener más información para crear cuentas de servicio, consulta Crea y administra cuentas de servicio.

    Como mínimo, la cuenta de servicio de Compute Engine especificada debe tener asignadas las siguientes funciones:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Estas funciones mínimas son necesarias para la cuenta de servicio especificada para la marca --compute-service-account. Para obtener más información, consulta Otorga funciones necesarias a la cuenta de servicio de Compute Engine.

  3. Usa el comando gcloud compute instances import para importar el dispositivo virtual.

    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
    

    Reemplaza lo siguiente:

    • VM_NAME: El nombre de la instancia que deseas crear.
    • SOURCE_URI: El URI para tu archivo OVA o OVF en Cloud Storage. Por ejemplo, gs://my-bucket/Ubuntu.ova.
    • ZONE: Es la zona en la que se creará el dispositivo virtual. Si se deja en blanco, se usa la zona predeterminada del proyecto
    • TEMP_SERVICE_ACCOUNT_EMAIL: Es la dirección de correo electrónico asociada con la cuenta de servicio personalizada creada en el paso anterior. Las VM temporales usan esta cuenta de servicio. Si no se especifica, la VM usa la cuenta de servicio predeterminada de Compute Engine.
    • SERVICE_ACCOUNT_EMAIL: la dirección de correo electrónico asociada con la cuenta de servicio personalizada que se conectará a la VM que creó el proceso de importación. No hay restricciones de permisos para esta cuenta de servicio. Puedes personalizar esta cuenta de servicio según sea necesario. Si no se especifica, la cuenta de servicio predeterminada de Compute Engine se conecta a la VM.
    • SCOPES: Especifica el nivel de acceso para la opción --service-account. Si no se especifica, se usan los permisos predeterminados. Para obtener más información, revisa la marca --scopes.

REST

  1. Agrega el dispositivo virtual a Cloud Storage.

  2. Crea una cuenta de servicio y asigna las funciones mínimas. Si deseas obtener más información para crear cuentas de servicio, consulta Crea y administra cuentas de servicio.

    Como mínimo, la cuenta de servicio de Compute Engine especificada debe tener asignadas las siguientes funciones:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Estas funciones mínimas son necesarias para la cuenta de servicio especificada para la marca -compute-service-account. Para obtener más información, consulta Otorga funciones necesarias a la cuenta de servicio de Compute Engine.

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

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto en el que deseas importar la imagen.
    • VM_NAME: Es el nombre de la VM que se creará.
    • SOURCE_FILE: El URI de la imagen en Cloud Storage. Por ejemplo, gs://my-bucket/Ubuntu.ova
    • ZONE: Es la zona en la que se creará la instancia. Si se deja en blanco, se usa la zona predeterminada del proyecto
    • TEMP_SERVICE_ACCOUNT_EMAIL: Es la dirección de correo electrónico asociada con la cuenta de servicio personalizada creada en el paso anterior. Las VM temporales usan esta cuenta de servicio. Si no se especifica, la VM usa la cuenta de servicio predeterminada de Compute Engine.
    • SERVICE_ACCOUNT_EMAIL: la dirección de correo electrónico asociada con la cuenta de servicio personalizada que se conectará a la VM que creó el proceso de importación. No hay restricciones de permisos para esta cuenta de servicio. Puedes personalizar esta cuenta de servicio según sea necesario. Si no se especifica, la cuenta de servicio predeterminada de Compute Engine se conecta a la VM.
    • SCOPES: Especifica el nivel de acceso para la opción -service-account. Si no se especifica, se usan los permisos predeterminados. Para obtener más información, revisa la marca --scopes.

¿Qué sigue?