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.

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

Antes de comenzar

Formatos admitidos

Puedes importar archivos de imagen 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 bucket.
  • Open Virtual Appliance (OVA): Un archivo OVA que contiene un archivo OVF y archivos VMDK.

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

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

  1. Prepara un archivo de imagen de máquina para la importación
  2. Elige un proyecto de destino
  3. Importa una imagen de máquina a Compute Engine

Prepara un archivo de máquina para importar

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

Agrega el archivo de imagen de máquina a Cloud Storage

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

Otorga los permisos necesarios.

Para importar una imagen de máquina a una imagen de Compute Engine, otorga permisos como se describe en la siguiente tabla.

Rol Permisos necesarios Descripción
Visualizador de objetos de almacenamiento roles/storage.objectViewer Otorga 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) el rol roles/vmmigration.serviceAgent en el bucket en el que reside la imagen que deseas 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, otorga el rol roles/vmmigration.admin a la cuenta de usuario que deseas usar para importar la imagen de origen.
Cuenta de servicio de VM Migration roles/vmmigration.serviceAgent Otórgale 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) en el 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 otorgar a esta cuenta de servicio 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 para una imagen de máquina. Para obtener más información sobre cómo crear o elegir un proyecto de destino, consulta Agrega un proyecto de destino.

Importa una imagen de máquina a Compute Engine

Puedes importar una imagen de máquina a Compute Engine con los comandos de Google Cloud CLI o de la API de 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 borran cuando se completa el proceso de importación de imágenes de máquina.

gcloud

Para importar una imagen de máquina a Compute Engine mediante Google Cloud CLI, 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

Reemplaza lo siguiente:

  • IMAGE_NAME: Es el nombre de la imagen de máquina que deseas crear. Para obtener más información sobre las reglas de nombres, consulta la Convención de nombres.
  • SOURCE_FILE: Es el archivo desde el que deseas importar la imagen de máquina. Ingresa la ruta de acceso con el formato gs://bucket/folder/file. Para obtener la ruta de acceso de un objeto dentro de un bucket, consulta Visualiza 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 deseas que se ejecute el proceso de importación de imágenes de máquina. La imagen de máquina se crea en la multirregión más cercana. Si deseas que la imagen de máquina se cree en una región, asegúrate de que singleRegionStorage esté configurado como verdadero. Para obtener una lista de regiones compatibles, consulta Regiones y zonas.
  • HOST_PROJECT_ID: El nombre del proyecto host desde el que deseas migrar la imagen de máquina.
  • TARGET_PROJECT: El proyecto de destino en el que deseas crear la imagen de máquina. Si aún no agregaste un proyecto de destino, hazlo mediante las instrucciones que se proporcionan en Agrega un proyecto de destino.
  • REGION_ID: La región en la que deseas que se ejecute el proceso de importación de imágenes de máquina. La imagen de máquina se crea en la multirregión más cercana. Si deseas que la imagen de máquina se cree en una región, asegúrate de que singleRegionStorage esté configurado como verdadero. Para obtener una lista de regiones compatibles, consulta Regiones y zonas.

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

API de REST

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

  1. Crea un recurso de importación de imágenes 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",
    ...
    }
    }
    

    Reemplaza lo siguiente:

    • HOST_PROJECT_ID: El nombre del proyecto host desde el que deseas migrar la imagen de máquina.
    • REGION_ID: La región en la que deseas que se ejecute el proceso de importación de imágenes de máquina. La imagen de máquina se crea en la multirregión más cercana. Si deseas que la imagen de maqúina se cree en una región, asegúrate de que singleRegionStorage esté configurado como verdadero. Para obtener una lista de regiones compatibles, consulta Regiones y zonas.
    • SOURCE_FILE: Es el archivo desde el que deseas importar la imagen de máquina. Ingresa la ruta de acceso con el formato gs://bucket/folder/file. Para obtener la ruta de acceso de un objeto dentro de un bucket, consulta Visualiza metadatos de objetos. Ten en cuenta que solo puedes importar imágenes de máquinas de archivos .ova y .ovf.
    • IMAGE_NAME: Es el nombre de la imagen de máquina que deseas crear. Para obtener más información sobre las reglas de nombres, consulta la Convención de nombres.
    • TARGET_PROJECT: El proyecto de destino en el que deseas crear la imagen de máquina. Si aún no agregaste un proyecto de destino, hazlo mediante las instrucciones que se proporcionan en Agrega un proyecto de destino.

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

    Consulta la siguiente tabla para obtener la lista completa de los campos de solicitud admitidos de creación de importación de imágenes.

    Nombre del campo Descripción
    cloudStorageUri Es la ruta de acceso del archivo desde el que deseas importar la imagen. Ingresa la ruta de acceso con el formato gs://bucket/folder/file. Para obtener la ruta de acceso de un objeto dentro de un bucket, consulta Visualiza metadatos de objetos.
    Ten en cuenta que solo puedes importar imágenes de máquinas de archivos .ovf y .ova.
    machineImageTargetDefaults.targetProject El proyecto de destino en el que deseas crear la imagen. 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, reemplaza lo siguiente:
    • HOST_PROJECT_ID: El nombre del proyecto host desde el que deseas migrar la imagen de máquina.
    • TARGET_PROJECT: el proyecto de destino en el que deseas crear la imagen.
    machineImageTargetDefaults.machine_image_name El nombre de la imagen de máquina que se creará. Para obtener más información sobre las reglas de nombres, consulta la convención de nombres de recursos.
    machineImageTargetDefaults.description (Opcional) Una 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 elige un tipo de máquina relevante según la información de la imagen de la máquina de origen.
    machineImageTargetDefaults.labels Para organizar tu proyecto, agrega a tus recursos etiquetas como pares clave-valor. Consulta Etiqueta recursos.
    machineImageTargetDefaults.tags Agrega cualquier etiqueta que desees adjuntar a la imagen de máquina. Consulta Administra etiquetas para recursos.
    machineImageTargetDefaults.additionalLicenses Puedes agregar hasta 10 licencias adicionales a la instancia de VM creada a partir de la imagen de máquina importada con un formato de URL válido. Por ejemplo, puedes agregar 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 en el 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 planeas ejecutar una aplicación en ella, es posible que la instancia necesite acceso a otros servicios y APIs de gcloud CLI. 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 Configura una VM para que se ejecute como una cuenta de servicio.
    Para conectar la cuenta de servicio a la instancia de Compute Engine, tu cuenta de usuario en el proyecto host de Compute Engine requiere los permisos necesarios. Para obtener más información, consulta Configura permisos en la cuenta de servicio del proyecto de destino.
    machineImageTargetDefaults.shielded_instance_config (Opcional) Habilita una VM protegida en esta instancia. Las VM protegidas se endurecen con un conjunto de controles de seguridad que brindan protección contra rootkits y bootkits. Consulta ¿Qué es una VM protegida?
    machineImageTargetDefaults.singleRegionStorage Establece esta marca como verdadera si deseas que la imagen de máquina storageLocations sea una región. Si configuras esta marca como falsa, se selecciona la multirregión más cercana.
    machineImageTargetDefaults.skip_os_adaptation Configura esta marca como verdadera si deseas omitir la adaptación del SO.
    Para funcionar de forma correcta en Google Cloud, las VMs creadas a partir de imágenes de máquina importadas requieren que se realicen cambios en su configuración. Estos cambios se denominan adaptaciones de SO. Compute Engine realiza adaptaciones de SO automáticamente en el proceso de importación de imágenes de máquina. Si deseas obtener más información, consulta Adapta las instancias de VM para que se ejecuten en Google Cloud.
    machineImageTargetDefaults.osAdaptationParameters.licenseType El tipo de licencia que deseas usar para tu imagen de máquina. Compute Engine admite licencias de prepago (PAYG) y licencias adquiridas por el usuario (BYOL) para las VMs implementadas. Compute Engine asigna el tipo de licencia predeterminado para una VM migrada según el sistema operativo migrado, como se describe en Sistemas operativos compatibles.
    Si tu sistema operativo admite varios tipos de licencias, puedes anular el tipo de licencia predeterminado para especificar de forma explícita un tipo de licencia PAYG o BYOL.
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces Compute Engine te permite crear de forma opcional una imagen de máquina con varias interfaces de red (NIC). Cada interfaz se adjunta a una red de VPC diferente, lo que le otorga a esa imagen de máquina acceso a diferentes redes de VPC en gcloud CLI.
    Antes de agregar interfaces de red adicionales, ten en cuenta las siguientes consideraciones:
    • No se admite adjuntar varias interfaces de red a la misma red de VPC. Si bien la configuración puede guardarse, la creación de la instancia de la VM fallará.
    • Después de crear una instancia de Compute Engine a partir de una imagen de máquina, mediante test-clone o cut-over, no puedes agregar ni quitar una interfaz de red en la instancia creada. Puedes repetir test-clone o cut-over con diferentes detalles del destino para recrear la instancia.
      Para agregar o quitar una interfaz de red, haz lo siguiente:
      • Selecciona Agregar interfaz de red para agregar una interfaz de red adicional a la instancia de Compute Engine. Puedes establecer todas las mismas opciones que usas con la interfaz de red inicial.
    Para obtener más información, consulta Crea instancias con interfaces de red múltiples.
    machineImageTargetDefaults.osAdaptationParameters.generalize Configura esta marca como verdadera si deseas generalizar la imagen de máquina.
    Cuando creas una instancia a partir de una imagen de máquina, Windows agrega información única a la instancia. La generalización es un proceso que quita esta información para que puedas crear varias instancias a partir de la misma imagen de máquina.
    machineImageTargetDefaults.encryption La clave de encriptación administrada por Google que deseas usar para encriptar tus datos durante el proceso de importación. Para obtener más información, consulta Encriptación en reposo predeterminada.

    Usa claves de encriptación administradas por el cliente (CMEK) para encriptar los datos de la imagen de máquina. Estas claves de encriptación son creadas, administradas y de tu propiedad. Para obtener más información, consulta Protege recursos a través de las claves de Cloud KMS.
    Cuando agregas una CMEK, debes otorgar permisos como se describe en la siguiente tabla.
    Rol Permisos necesarios Descripción
    Cuenta de servicio de Cloud VM Migration roles/vmmigration.serviceAgent Otorga este permiso a la cuenta de servicio de Compute Engine para encriptar los datos de la imagen de máquina creada durante el proceso de importación.
    Agente de servicio de Compute Engine roles/compute.serviceAgent Otorga este permiso al agente de servicio de Compute Engine para encriptar los datos durante el proceso de importación.

    Deberías ver una respuesta similar a la siguiente respuesta de ejemplo.

    {
      "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. Para verificar si el trabajo de importación de imágenes de máquina se completó, sondea la operación mediante el siguiente comando.

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

    Reemplaza lo siguiente:

    • HOST_PROJECT_ID: El nombre del proyecto host desde el que migras la imagen de máquina.
    • REGION_ID: La región en la que deseas que se ejecute el proceso de importación de imágenes de máquina. La imagen de máquina se crea en la multirregión más cercana. Si deseas que la imagen de maqúina se cree en una región, asegúrate de que singleRegionStorage esté configurado como verdadero. Para obtener una lista de regiones compatibles, consulta Regiones y zonas.
    • OPERATION_ID: el ID de operación del trabajo de migración.

    Deberías ver una respuesta de finalización de 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. Supervisa el trabajo de importación de imágenes de máquina para completarlo con el siguiente comando.

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

    Reemplaza lo siguiente:

    • HOST_PROJECT_ID: El nombre del proyecto host desde el que migras la imagen de máquina.
    • REGION_ID: La región en la que deseas que se ejecute el proceso de importación de imágenes de máquina. La imagen de máquina se crea en la multirregión más cercana. Si deseas que la imagen de maqúina se cree en una región, asegúrate de que singleRegionStorage esté configurado como verdadero. Para obtener una lista de regiones compatibles, consulta Regiones y zonas.
    • IMPORT_NAME: el ID que representa el recurso de importación de imágenes de máquina. Cuando importas una imagen de máquina a Compute Engine, Migrate to Virtual Machines primero crea un recurso de importación de imágenes de máquina. El recurso de importación de imágenes de máquina representa el proceso de importación de imágenes de máquina. Puedes usar IMPORT_NAME para obtener el vínculo 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 trabajo similar a la siguiente respuesta de muestra.

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

¿Qué sigue?