Importar aplicaciones virtuales


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

El formato OVF es un formato popular y muy utilizado para los dispositivos virtuales. Cuando empaquetas aplicaciones virtuales en formato OVF, se genera un paquete OVF. Un paquete OVF es una carpeta que contiene un .ovfarchivo de descriptor y una colección de otros recursos, como discos. Cuando un paquete OVF se archiva en un solo archivo, se denomina archivo OVA.

En esta página se describen los pasos que puedes seguir para importar una imagen de máquina de un dispositivo virtual mediante Compute Engine.

Antes de empezar

Formatos de archivo admitidos

Puedes importar archivos de imágenes de máquina en los siguientes formatos mediante Compute Engine:

  • Formato de virtualización abierto (OVF): un archivo OVF y archivos de disco de máquina virtual (VMDK) en el mismo contenedor.

  • Aparato virtual abierto (OVA): un archivo OVA que contiene un archivo OVF y archivos de disco. Compute Engine admite la importación de archivos de imagen de máquina OVA en los siguientes formatos de archivo de disco:

    • Disco de máquina virtual (VMDK)
    • Copia durante la escritura de QEMU (QCOW)
    • QEMU copy-on-write 2 (QCOW2)
    • Formato de disco mejorado de QEMU (QED)
    • VPC
    • Imagen de disco virtual (VDI)
    • Disco duro virtual v2 (VHDX)

Limitaciones

Cuando importas imágenes de máquina, se aplican las siguientes limitaciones:

  • No puedes importar imágenes de máquina a series de máquinas de cuarta generación porque no admiten volúmenes de Hyperdisk de Google Cloud.
  • No puedes importar imágenes de máquina basadas en la arquitectura Arm.
  • No puedes crear imágenes de máquina a partir de VMs de origen con ninguno de los siguientes elementos:
    • Discos adjuntos de más de 200 TB
    • Tipos de máquinas A4, A3, C3D, H3 o Z3

Proceso de importación de imágenes de máquina

Para importar una imagen de máquina a una imagen de máquina de Compute Engine mediante Compute Engine, sigue estos pasos:

  1. Preparar un archivo de imagen de máquina para importarlo
  2. Elegir un proyecto de destino
  3. Importar una imagen de máquina a Compute Engine

Preparar un archivo de máquina para importarlo

Para importar una imagen de máquina a una imagen de Compute Engine, primero debes preparar el archivo de imagen de máquina para la importación. En las secciones siguientes se analizan estas tareas en detalle.

Añade el archivo de imagen de máquina a Cloud Storage

Para importar una imagen de máquina a una imagen de máquina de Compute Engine, primero debes añadir el archivo de imagen de máquina a Cloud Storage. Para obtener más información, consulta Subir objetos desde un sistema de archivos. Para obtener un mejor rendimiento, te recomendamos que subas el archivo de imagen de máquina a un contenedor de la misma Google Cloud en la que quieras crear la imagen de máquina.

Concede los permisos necesarios

Para importar una imagen de máquina a una imagen de máquina de Compute Engine, concede los permisos que se describen en la siguiente tabla.

Rol Los permisos que requiere Descripción
Lector de objetos de Storage roles/storage.objectViewer Asigna el rol roles/storage.objectViewer a la cuenta de servicio predeterminada de Migrate to Virtual Machines del proyecto host (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) en el bucket donde se encuentra la imagen que quieres importar. Este permiso permite que Migrate to Virtual Machines acceda a la imagen de origen.
Administrador de VM Migration roles/vmmigration.admin En el proyecto host, concede a la cuenta de usuario que quieras usar para importar la imagen de origen el rol roles/vmmigration.admin.
Cuenta de servicio de migración de máquinas virtuales roles/vmmigration.serviceAgent Asigna el rol roles/vmmigration.serviceAgent a la cuenta de servicio predeterminada de Migrate to Virtual Machines en el proyecto host (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) del proyecto de destino. Por ejemplo, si service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com es la cuenta de servicio de Migrate to Virtual Machines en el proyecto host, debes concederle el rol roles/vmmigration.serviceAgent para poder crear la imagen en el proyecto de destino.

Elige un proyecto de destino

Para alojar la imagen de máquina, debes crear o elegir un proyecto de destino. Un proyecto de destino define el proyecto de destino de una imagen de máquina. Para obtener más información sobre cómo crear o elegir un proyecto de destino, consulta el artículo Añadir un proyecto de destino.

Importar una imagen de máquina a Compute Engine

Puedes importar una imagen de máquina a Compute Engine mediante comandos de la CLI de Google Cloud o de la API REST.

Cuando importas una imagen de máquina, Compute Engine crea algunos recursos temporales, como VMs o discos, en el proyecto de destino. Estos recursos temporales se eliminan cuando se completa el proceso de importación de la imagen de máquina.

gcloud

Para importar una imagen de máquina a Compute Engine mediante la CLI de Google Cloud, usa la siguiente solicitud.

gcloud alpha migration vms machine-image-imports create IMAGE_NAME \
--source-file=SOURCE_FILE \
--location=REGION_ID \
--target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT

Haz los cambios siguientes:

  • IMAGE_NAME: el nombre de la imagen de máquina que quieras crear. Para obtener más información sobre las reglas de nomenclatura, consulta el artículo Convención de nomenclatura.
  • SOURCE_FILE: el archivo del que quieres importar la imagen de máquina. Introduce la ruta con el formato gs://bucket/folder/file. Para obtener la ruta de un objeto dentro de un segmento, consulta Ver metadatos de objetos. Ten en cuenta que solo puedes importar imágenes de archivos .ovf y .ova.
  • REGION_ID: la región en la que quieres que se ejecute el proceso de importación de la imagen de máquina. La imagen de máquina se crea en la multirregión más cercana. Si quieres que la imagen de máquina se cree en una región, comprueba que singleRegionStorage tenga el valor true. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.
  • HOST_PROJECT_ID: el nombre del proyecto host del que quieres migrar la imagen de máquina.
  • TARGET_PROJECT: el proyecto de destino en el que quieres crear la imagen de máquina. Si aún no has añadido un proyecto de destino, hazlo siguiendo las instrucciones que se indican en Añadir un proyecto de destino.
  • REGION_ID: la región en la que quieres que se ejecute el proceso de importación de la imagen de máquina. La imagen de máquina se crea en la multirregión más cercana. Si quieres que la imagen de máquina se cree en una región, comprueba que singleRegionStorage tenga el valor true. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.

Para obtener más información, consulta gcloud compute migration machine-image-imports.

API REST

Para importar una imagen de máquina a Compute Engine mediante la API REST, sigue estos pasos.

  1. Crea un recurso de importación de imagen de máquina con la siguiente solicitud.

    POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME
    {
    "cloudStorageUri": "SOURCE_FILE",
    "machineImageTargetDefaults": {
    "imageName": "IMAGE_NAME",
    "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT",
    ...
    }
    }
    

    Haz los cambios siguientes:

    • HOST_PROJECT_ID: el nombre del proyecto host del que quieres migrar la imagen de máquina.
    • REGION_ID: la región en la que quieres que se ejecute el proceso de importación de la imagen de máquina. La imagen de máquina se crea en la multirregión más cercana. Si quieres que la imagen de máquina se cree en una región, comprueba que singleRegionStorage esté definido como true. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.
    • SOURCE_FILE: el archivo del que quieres importar la imagen de máquina. Introduce la ruta con el formato gs://bucket/folder/file. Para obtener la ruta de un objeto dentro de un segmento, consulta Ver metadatos de objetos. Ten en cuenta que solo puedes importar imágenes de máquina desde archivos .ova y .ovf.
    • IMAGE_NAME: el nombre de la imagen de máquina que quieras crear. Para obtener más información sobre las reglas de nomenclatura, consulta el artículo Convención de nomenclatura.
    • TARGET_PROJECT: el proyecto de destino en el que quieres crear la imagen de máquina. Si aún no has añadido un proyecto de destino, hazlo siguiendo las instrucciones que se indican en Añadir un proyecto de destino.

    En este ejemplo, IMPORT_NAME es un ID que representa el recurso de importación de la imagen de máquina. Cuando importa una imagen de máquina a Compute Engine, Migrate to Virtual Machines crea primero un recurso de importación de imágenes de máquina. El recurso de importación de imágenes de máquinas representa el proceso de importación de imágenes de máquinas. Puedes usar IMPORT_NAME para obtener el enlace a la imagen de máquina que se importó como parte del proceso de importación de imágenes de máquina.

    En la siguiente tabla se muestra la lista completa de campos admitidos para la creación de solicitudes de importación de imágenes de máquina.

    Nombre del campo Descripción
    cloudStorageUri Ruta del archivo desde el que quieres importar la imagen de máquina. Introduce la ruta con el formato gs://bucket/folder/file. Para obtener la ruta de un objeto dentro de un segmento, consulta Ver metadatos de objetos.
    Ten en cuenta que solo puedes importar imágenes de máquina desde archivos .ovf y .ova.
    machineImageTargetDefaults.targetProject El proyecto de destino en el que quieres crear la imagen de máquina. Para obtener más información, consulta la referencia de la API del proyecto de destino. Por ejemplo:
    projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
    En el ejemplo, sustituya lo siguiente:
    • HOST_PROJECT_ID: el nombre del proyecto host del que quieres migrar la imagen de máquina.
    • TARGET_PROJECT: el proyecto de destino en el que quieres crear la imagen.
    machineImageTargetDefaults.machine_image_name Nombre de la imagen de máquina que se va a crear. Para obtener más información sobre las reglas de nomenclatura, consulta el artículo Convenciones para asignar nombres de recursos.
    machineImageTargetDefaults.description (Opcional) Descripción de la imagen de máquina.
    machineImageTargetDefaults.machine_type (Opcional) La máquina con la que se creará la imagen de máquina. Si no especificas el tipo de máquina, Compute Engine elegirá uno adecuado en función de la información de la imagen de máquina de origen.
    machineImageTargetDefaults.labels Para organizar tu proyecto, añade etiquetas como pares clave-valor a los recursos. Consulta Etiquetar recursos.
    machineImageTargetDefaults.tags Añade las etiquetas que quieras asociar a la imagen de máquina. Consulta Gestionar etiquetas de recursos.
    machineImageTargetDefaults.additionalLicenses Puede añadir hasta 10 licencias adicionales a la instancia de VM creada a partir de la imagen de máquina importada mediante un formato de URL válido. Por ejemplo, puedes añadir licencias adicionales con el siguiente formato de URL:
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    machineImageTargetDefaults.service_account Especifica la cuenta de servicio del proyecto de destino que usa la imagen de máquina. De forma predeterminada, no se asigna ninguna cuenta de servicio a la imagen de máquina.
    Si creas una instancia de Compute Engine a partir de una imagen de máquina y tienes previsto ejecutar una aplicación en ella, es posible que la instancia necesite acceder a otros servicios y APIs de la CLI de gcloud. Crea una cuenta de servicio en el proyecto de destino con los permisos necesarios para acceder a estos servicios y APIs antes de crear la instancia de Compute Engine. A continuación, especifica esa cuenta de servicio aquí. Para obtener más información, consulta Configurar una VM para que se ejecute como una cuenta de servicio.
    Para asociar la cuenta de servicio a la instancia de Compute Engine, tu cuenta de usuario en el proyecto host de Compute Engine debe tener los permisos necesarios. Para obtener más información, consulta Configurar permisos de la cuenta de servicio del proyecto de destino.
    machineImageTargetDefaults.shielded_instance_config Opcional: Habilita VM blindada en esta instancia. Las VMs blindadas se refuerzan con un conjunto de controles de seguridad que te permiten defenderte de rootkits y bootkits. Consulta ¿Qué es una VM blindada?
    machineImageTargetDefaults.singleRegionStorage Asigna el valor true a esta marca si quieres que la imagen de máquina storageLocations sea una región. Si asignas el valor "false" a esta marca, se seleccionará la multirregión más cercana.
    machineImageTargetDefaults.skip_os_adaptation Asigna el valor true a esta marca si quieres omitir la adaptación del sistema operativo.
    Para que funcionen correctamente en Google Cloud, las VMs creadas a partir de imágenes de máquina importadas requieren que se hagan cambios en su configuración. Estos cambios se denominan adaptaciones de SO. Compute Engine adapta el SO automáticamente durante el proceso de importación de la imagen de máquina. Para obtener más información, consulta Adaptar instancias de VM para que se ejecuten en Google Cloud.
    machineImageTargetDefaults.osAdaptationParameters.licenseType El tipo de licencia que quieres usar para tu imagen de máquina. Compute Engine admite licencias de pago por uso y licencias adquiridas por el usuario (BYOL) para las VMs implementadas. Compute Engine asigna el tipo de licencia predeterminado de una máquina virtual migrada en función del sistema operativo migrado, tal como se describe en Sistemas operativos compatibles.
    Si tu sistema operativo admite varios tipos de licencia, puedes anular el tipo de licencia predeterminado para especificar explícitamente un tipo de licencia de pago por uso o trae tu propia licencia.
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces Compute Engine te permite crear imágenes de máquina con varias interfaces de red (NICs). Cada interfaz está conectada a una red de VPC diferente, lo que da a esa imagen de máquina acceso a diferentes redes de VPC en gcloud CLI.
    Antes de añadir interfaces de red adicionales, ten en cuenta lo siguiente:
    • No se admite la vinculación de varias interfaces de red a la misma red de VPC. Aunque se guarde la configuración, no se podrá crear la instancia de la VM.
    • Una vez que se ha creado una instancia de Compute Engine a partir de una imagen de máquina mediante test-clone o cut-over, no se puede añadir ni eliminar una interfaz de red en la instancia creada. Puedes repetir test-clone o cut-over con otros detalles de destino para volver a crear la instancia.
      Para añadir o quitar una interfaz de red, sigue estos pasos:
      • Selecciona Añadir interfaz de red para añadir una interfaz de red adicional a la instancia de Compute Engine. Puedes configurar las mismas opciones que con la interfaz de red inicial.
    Para obtener más información, consulta el artículo Crear instancias con varias interfaces de red.
    machineImageTargetDefaults.osAdaptationParameters.generalize Asigna el valor true a esta marca si quieres generalizar la imagen de máquina.
    Cuando creas una instancia a partir de una imagen de máquina, Windows añade información única a la instancia. La generalización es un proceso que elimina esta información para que puedas crear varias instancias a partir de la misma imagen de máquina.
    machineImageTargetDefaults.encryption La Google-owned and Google-managed encryption key que quieras usar para encriptar tus datos durante el proceso de importación. Para obtener más información, consulta Cifrado en reposo predeterminado.

    Usa claves de cifrado gestionadas por el cliente (CMEK) para cifrar los datos de la imagen de máquina. Tú creas, gestionas y tienes la propiedad de estas claves de cifrado. Para obtener más información, consulta Proteger recursos con claves de Cloud KMS.

    Nota: La clave de cifrado que selecciones para usar durante el proceso de importación también se usará para la imagen de salida.

    Cuando añadas una CMEK, debes conceder permisos tal como se describe en la siguiente tabla.
    Rol Los permisos que requiere Descripción
    Cuenta de servicio de Cloud VM Migration roles/vmmigration.serviceAgent Concede este permiso a la cuenta de servicio de Compute Engine para cifrar los datos de la imagen de máquina creada durante el proceso de importación.
    Agente de servicio de Compute Engine roles/compute.serviceAgent Concede este permiso al agente de servicio de Compute Engine para que cifre los datos durante el proceso de importación.

    Deberías ver una respuesta similar a la siguiente.

    {
      "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
      "metadata": {
        "createTime": "2023-10-31T09:12:26.94928636Z",
        "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
        "verb": "create",
        "apiVersion": "v1",
        "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
      }
    }
    
  2. Comprueba si el trabajo de importación de la imagen de máquina se ha completado consultando la operación con el siguiente comando.

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID
    

    Haz los cambios siguientes:

    • HOST_PROJECT_ID: el nombre del proyecto host desde el que vas a migrar la imagen de máquina.
    • REGION_ID: la región en la que quieres que se ejecute el proceso de importación de la imagen de máquina. La imagen de máquina se crea en la multirregión más cercana. Si quieres que la imagen de máquina se cree en una región, comprueba que singleRegionStorage esté definido como true. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.
    • OPERATION_ID: el ID de operación de la tarea de migración.

    Deberías ver una respuesta de finalización de la operación similar a la siguiente respuesta de ejemplo.

      {
        "done": true,
        "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
        "response": {
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.ImageImport",
          "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "cloudStorageUri": "SOURCE_FILE",
          "createTime": "2023-10-31T09:04:04.413664947Z",
          "machineImageTargetDefaults": {
            "imageName": "IMAGE_NAME",
            "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
          },
          "recentImageImportJobs": [
            {
              "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
              "diskImageTargetDetails": {
               "imageName": "IMAGE_NAME",
               "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
            },
             "state": "PENDING"
           }
          ]
        },
        "metadata": {
          "createTime": "2023-10-31T09:04:04.416740716Z",
          "endTime": "2023-10-31T09:05:36.79987142Z",
          "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "verb": "create",
          "apiVersion": "v1",
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
        }
      }
    
  3. Monitoriza el trabajo de importación de la imagen de máquina para comprobar si se ha completado con el siguiente comando.

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job
    

    Haz los cambios siguientes:

    • HOST_PROJECT_ID: el nombre del proyecto host desde el que vas a migrar la imagen de máquina.
    • REGION_ID: la región en la que quieres que se ejecute el proceso de importación de la imagen de máquina. La imagen de máquina se crea en la multirregión más cercana. Si quieres que la imagen de máquina se cree en una región, comprueba que singleRegionStorage esté definido como true. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.
    • IMPORT_NAME: el ID que representa el recurso de importación de imágenes de la máquina. Cuando importas una imagen de máquina a Compute Engine, Migrate to Virtual Machines crea primero un recurso de importación de imagen de máquina. El recurso de importación de imágenes de máquinas representa el proceso de importación de imágenes de máquinas. Puedes usar IMPORT_NAME para obtener el enlace a la imagen de máquina que se importó como parte del proceso de importación de imágenes de máquina.

    Deberías ver una respuesta de finalización de la tarea similar a la siguiente.

    {
      "createTime":"2023-10-31T09:12:27.053788394Z",
      "createdResources":[
        "https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME"
      ],
      "diskImageTargetDetails": {
        "imageName":"IMAGE_NAME",
        "targetProject":"projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
      },
      "endTime":"2023-10-31T09:16:50.224865783Z",
      "name":"projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
      "state":"SUCCEEDED"
    }
    

Siguientes pasos