Importar dispositivos 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 (VM).

Un formato muy utilizado y popular para dispositivos virtuales es el formato OVF . Cuando empaqueta dispositivos virtuales en formato OVF, 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 solo archivo, se lo denomina archivo OVA.

Esta página describe los pasos que puede seguir para importar una imagen de máquina desde un dispositivo virtual usando Compute Engine.

Antes de comenzar

Formatos de archivo admitidos

Puedes importar archivos de imagen de máquina en los siguientes formatos usando Compute Engine:

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

  • Dispositivo 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 en escritura QEMU (QCOW)
    • Copia en escritura QEMU 2 (QCOW2)
    • Formato de disco mejorado QEMU (QED)
    • VPC
    • Imagen de disco virtual (VDI)
    • Disco duro virtual v2 (VHDX)

Limitaciones

Al importar imágenes de máquinas, se aplican las siguientes limitaciones:

  • No puede importar imágenes de máquinas a series de máquinas de cuarta generación, ya que no admiten volúmenes de Google Cloud Hyperdisk.
  • No puede importar imágenes de máquinas basadas en arquitectura Arm.
  • No puede crear imágenes de máquina a partir de máquinas virtuales de origen con ninguno de los siguientes elementos:
    • Discos conectados 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 la imagen de máquina de Compute Engine usando Compute Engine, siga los siguientes pasos:

  1. Prepare un archivo de imagen de máquina para importar
  2. Elija un proyecto objetivo
  3. Importar una imagen de máquina a Compute Engine

Prepare un archivo de máquina para importar

Para importar una imagen de máquina a una imagen de Compute Engine, primero debe preparar el archivo de imagen de la máquina para importar. Las siguientes secciones analizan estas tareas en detalle.

Agregue el archivo de imagen de la máquina a Cloud Storage

Para importar una imagen de máquina a una imagen de máquina de Compute Engine, primero debes agregar el archivo de imagen de la máquina a Cloud Storage. Para obtener más información, consulte Cargar objetos desde un sistema de archivos . Para un mejor rendimiento, le recomendamos que cargue el archivo de imagen de la máquina en un depósito en el mismo Google Cloud en el que desea crear la imagen de la máquina.

Conceder los permisos necesarios

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

Role Permisos requeridos Descripción
Visor de objetos de almacenamiento roles/storage.objectViewer Otorgue a la cuenta de servicio predeterminada Migrar a máquinas virtuales en el proyecto host ( service- HOST_PROJECT_NUMBER @gcp-sa-vmmigration.iam.gserviceaccount.com ) la función roles/storage.objectViewer en el depósito donde reside la imagen que desea importar. Este permiso permite a Migrar a máquinas virtuales acceder a la imagen de origen.
Administrador de migración de VM roles/vmmigration.admin En el proyecto host, otorgue a la cuenta de usuario que desea usar para importar la imagen de origen la función roles/vmmigration.admin .
Cuenta de servicio de migración de VM roles/vmmigration.serviceAgent Otorgue a la cuenta de servicio predeterminada Migrar a máquinas virtuales en el proyecto host ( service- HOST_PROJECT_NUMBER @gcp-sa-vmmigration.iam.gserviceaccount.com ) el rol roles/vmmigration.serviceAgent en el proyecto de destino. Por ejemplo, si service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com es la cuenta de servicio Migrar a máquinas virtuales en el proyecto host, debe otorgarle a esta cuenta de servicio el rol roles/vmmigration.serviceAgent para poder crear la imagen en el proyecto de destino.

Elija un proyecto objetivo

Para alojar la imagen de la máquina, debe 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, consulte Agregar un proyecto de destino .

Importar una imagen de máquina a Compute Engine

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

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

nube de gcloud

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

Reemplace lo siguiente:

  • IMAGE_NAME : el nombre de la imagen de la máquina que desea crear. Para obtener más información sobre las reglas de nomenclatura, consulte Convención de nomenclatura .
  • SOURCE_FILE : el archivo desde el que desea importar la imagen de la máquina. Ingrese la ruta en el formato gs://bucket/carpeta/archivo . Para obtener la ruta de un objeto dentro de un depósito, consulte Ver metadatos del objeto . Tenga en cuenta que sólo puede importar imágenes desde archivos .ovf y .ova .
  • REGION_ID : la región en la que desea que se ejecute el proceso de importación de imágenes de la máquina. La imagen de la máquina se crea en la región múltiple más cercana. Si desea que la imagen de la máquina se cree en una región, asegúrese de que singleRegionStorage esté configurado en verdadero. Para obtener una lista de regiones admitidas, consulte Regiones y zonas .
  • HOST_PROJECT_ID : el nombre del proyecto host desde el que desea migrar la imagen de la máquina.
  • TARGET_PROJECT : el proyecto de destino en el que desea crear la imagen de la máquina. Si aún no ha agregado un proyecto de destino, hágalo siguiendo las instrucciones proporcionadas en Agregar un proyecto de destino .
  • REGION_ID : la región en la que desea que se ejecute el proceso de importación de imágenes de la máquina. La imagen de la máquina se crea en la región múltiple más cercana. Si desea que la imagen de la máquina se cree en una región, asegúrese de que singleRegionStorage esté configurado en verdadero. Para obtener una lista de regiones admitidas, consulte Regiones y zonas .

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

API DESCANSO

Para importar una imagen de máquina a Compute Engine usando la API REST, sigue los siguientes pasos.

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

    Reemplace lo siguiente:

    • HOST_PROJECT_ID : el nombre del proyecto host desde el que desea migrar la imagen de la máquina.
    • REGION_ID : la región en la que desea que se ejecute el proceso de importación de imágenes de la máquina. La imagen de la máquina se crea en la región múltiple más cercana. Si desea que la imagen de la máquina se cree en una región, asegúrese de que singleRegionStorage esté configurado en verdadero. Para obtener una lista de regiones admitidas, consulte Regiones y zonas .
    • SOURCE_FILE : el archivo desde el que desea importar la imagen de la máquina. Ingrese la ruta en el formato gs://bucket/carpeta/archivo . Para obtener la ruta de un objeto dentro de un depósito, consulte Ver metadatos del objeto . Tenga en cuenta que sólo puede importar imágenes de máquinas desde archivos .ova y .ovf .
    • IMAGE_NAME : el nombre de la imagen de la máquina que desea crear. Para obtener más información sobre las reglas de nomenclatura, consulte Convención de nomenclatura .
    • TARGET_PROJECT : el proyecto de destino en el que desea crear la imagen de la máquina. Si aún no ha agregado un proyecto de destino, hágalo siguiendo las instrucciones proporcionadas en Agregar un proyecto de destino .

    En este ejemplo, IMPORT_NAME es un 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, Migrar a máquinas virtuales crea primero un recurso de importación de imagen de máquina. El recurso de importación de imágenes de la máquina representa el proceso de importación de imágenes de la máquina. Puede utilizar IMPORT_NAME para obtener el enlace a la imagen de la máquina que se importó como parte del proceso de importación de la imagen de la máquina.

    Consulte la siguiente tabla para obtener la lista completa de campos admitidos para importar imágenes de máquina y crear solicitudes.

    Nombre del campo Descripción
    cloudStorageUri La ruta del archivo desde el que desea importar la imagen de la máquina. Ingrese la ruta en el formato gs://bucket/carpeta/archivo . Para obtener la ruta de un objeto dentro de un depósito, consulte Ver metadatos del objeto .
    Tenga en cuenta que sólo puede importar imágenes de máquina desde archivos .ovf y .ova .
    machineImageTargetDefaults.targetProject El proyecto de destino en el que desea crear la imagen de la máquina. Para obtener más información, consulte la referencia de API del proyecto de destino . Por ejemplo,
    projects/ HOST_PROJECT_ID /locations/global/targetProjects/ TARGET_PROJECT
    En el ejemplo, reemplace lo siguiente:
    • HOST_PROJECT_ID : el nombre del proyecto host desde el que desea migrar la imagen de la máquina.
    • TARGET_PROJECT : el proyecto de destino en el que desea crear la imagen.
    machineImageTargetDefaults.machine_image_name El nombre de la imagen de la máquina que se creará. Para obtener más información sobre las reglas de nomenclatura, consulte convención de nomenclatura de recursos .
    machineImageTargetDefaults.description (Opcional) Una descripción de la imagen de la máquina.
    machineImageTargetDefaults.machine_type (Opcional) La máquina con la que se creará la imagen de la 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 su proyecto, agregue etiquetas como pares clave-valor a sus recursos. Consulte Recursos de etiquetado .
    machineImageTargetDefaults.tags Agregue las etiquetas que desee adjuntar a la imagen de la máquina. Consulte Administrar etiquetas para recursos .
    machineImageTargetDefaults.additionalLicenses Puede agregar hasta 10 licencias adicionales a la instancia de VM creada a partir de la imagen de la máquina importada usando un formato de URL válido. Por ejemplo, puede agregar licencias adicionales utilizando el siguiente formato de URL:
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    machineImageTargetDefaults.service_account Especifique la cuenta de servicio en el proyecto de destino utilizado por la imagen de la máquina. De forma predeterminada, no se asigna ninguna cuenta de servicio a la imagen de la 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 otras API y servicios CLI de gcloud. Cree una cuenta de servicio en el proyecto de destino con los permisos necesarios para acceder a estos servicios y API antes de crear la instancia de Compute Engine. Luego, especifique esa cuenta de servicio aquí. Para obtener más información, consulte configurar una máquina virtual para ejecutarla como una cuenta de servicio .
    Para adjuntar la cuenta de servicio a la instancia de Compute Engine, su cuenta de usuario en el proyecto host de Compute Engine requiere los permisos necesarios. Para obtener más información, consulte Configuración de permisos en la cuenta de servicio del proyecto de destino .
    machineImageTargetDefaults.shielded_instance_config (Opcional) Habilite la VM protegida en esta instancia. Las máquinas virtuales protegidas están reforzadas por un conjunto de controles de seguridad que ayudan a defenderse contra rootkits y bootkits. Consulte ¿Qué es una máquina virtual protegida?
    machineImageTargetDefaults.singleRegionStorage Establezca este indicador en verdadero si desea que las storageLocations imágenes de la máquina sean una región. Si establece esta bandera en falso, se selecciona la multiregión más cercana.
    machineImageTargetDefaults.skip_os_adaptation Establezca este indicador en verdadero si desea omitir la adaptación del sistema operativo.
    Para funcionar correctamente en Google Cloud, las máquinas virtuales creadas a partir de imágenes de máquinas importadas requieren que se realicen cambios en su configuración. Estos cambios se conocen como adaptaciones del sistema operativo . Compute Engine realiza adaptaciones del sistema operativo automáticamente en el proceso de importación de imágenes de la máquina. Para obtener más información, consulte Adaptar instancias de VM para que se ejecuten en Google Cloud .
    machineImageTargetDefaults.osAdaptationParameters.licenseType El tipo de licencia que desea utilizar para la imagen de su máquina. Compute Engine admite licencias de pago por uso (PAYG) y trae tus propias licencias (BYOL) para tus máquinas virtuales 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 su sistema operativo admite varios tipos de licencia, puede anular el tipo de licencia predeterminado para especificar explícitamente un tipo de licencia PAYG o BYOL.
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces Compute Engine te permite, opcionalmente, crear imágenes de máquina con múltiples interfaces de red (NIC). Cada interfaz está conectada a una red de VPC diferente, lo que le brinda a esa imagen de máquina acceso a diferentes redes de VPC en la CLI de gcloud.
    Antes de agregar interfaces de red adicionales, tenga en cuenta las siguientes consideraciones:
    • No se admite la conexión de varias interfaces de red a la misma red VPC. Si bien es posible que se guarde la configuración, la creación de instancias 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 eliminar una interfaz de red en la instancia creada. Puede repetir test-clone o cut-over con diferentes detalles de destino para recrear la instancia.
      Para agregar o eliminar una interfaz de red:
      • Seleccione Agregar interfaz de red para agregar una interfaz de red adicional a la instancia de Compute Engine. Puede configurar las mismas opciones que con la interfaz de red inicial.
    Para obtener más información, consulte Creación de instancias con múltiples interfaces de red .
    machineImageTargetDefaults.osAdaptationParameters.generalize Establezca este indicador en verdadero si desea generalizar la imagen de la máquina.
    Cuando crea 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 elimina esta información para que pueda crear varias instancias a partir de la misma imagen de máquina.
    machineImageTargetDefaults.encryption El Google-owned and Google-managed encryption key que desea utilizar para cifrar sus datos durante el proceso de importación. Para obtener más información, consulte Cifrado predeterminado en reposo .

    Utilice claves de cifrado administradas por el cliente (CMEK) para cifrar los datos de la imagen de la máquina. Estas claves de cifrado son creadas, administradas y de su propiedad. Para obtener más información, consulte Proteger recursos mediante claves de Cloud KMS .
    Cuando agrega una CMEK, debe otorgar permisos como se describe en la siguiente tabla.
    Role Permisos requeridos Descripción
    Cuenta de servicio de migración de VM a la nube roles/vmmigration.serviceAgent Otorgue este permiso a la cuenta de servicio de Compute Engine para cifrar los datos de la imagen de la máquina creada durante el proceso de importación.
    Agente de servicio de Compute Engine roles/compute.serviceAgent Otorgue este permiso al agente de servicio de Compute Engine para cifrar los datos durante el proceso de importación.

    Debería 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. Verifique si el trabajo de importación de imágenes de la máquina está completo sondeando la operación usando el siguiente comando.

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

    Reemplace lo siguiente:

    • HOST_PROJECT_ID : el nombre del proyecto host desde el que está migrando la imagen de la máquina.
    • REGION_ID : la región en la que desea que se ejecute el proceso de importación de imágenes de la máquina. La imagen de la máquina se crea en la región múltiple más cercana. Si desea que la imagen de la máquina se cree en una región, asegúrese de que singleRegionStorage esté configurado en verdadero. Para obtener una lista de regiones admitidas, consulte Regiones y zonas .
    • OPERATION_ID : el ID de operación del trabajo de migración.

    Debería 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. Supervise el trabajo de importación de imágenes de la máquina para completarlo utilizando el siguiente comando.

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

    Reemplace lo siguiente:

    • HOST_PROJECT_ID : el nombre del proyecto host desde el que está migrando la imagen de la máquina.
    • REGION_ID : la región en la que desea que se ejecute el proceso de importación de imágenes de la máquina. La imagen de la máquina se crea en la región múltiple más cercana. Si desea que la imagen de la máquina se cree en una región, asegúrese de que singleRegionStorage esté configurado en verdadero. Para obtener una lista de regiones admitidas, consulte 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, Migrar a máquinas virtuales crea primero un recurso de importación de imagen de máquina. El recurso de importación de imágenes de la máquina representa el proceso de importación de imágenes de la máquina. Puede utilizar IMPORT_NAME para obtener el enlace a la imagen de la máquina que se importó como parte del proceso de importación de la imagen de la máquina.

    Debería ver una respuesta de finalización del trabajo similar a la siguiente respuesta de ejemplo.

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