Importa discos virtuales

Si tienes discos virtuales en tu entorno local con el software y las opciones de configuración que necesitas (a veces llamados discos dorados o imágenes doradas), puedes ahorrar tiempo si los importas en Compute Engine y usas la imagen resultante para crear máquinas virtuales. La herramienta de importación admite la mayoría de los formatos de archivo de discos virtuales, incluidos VMDK y VHD.

Si exportaste tu disco desde Compute Engine, puedes crear imágenes desde el disco.

A fin de obtener información sobre cómo crear un sistema automatizado para migrar varias máquinas virtuales (VM), consulta la página sobre cómo migrar VM a Compute Engine.

Antes de comenzar

Habilita la API de Cloud Build

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

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

Console

  1. Habilita la API de Cloud Build.

    Habilitar la API de Cloud Build

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

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

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

gcloud

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

  1. Habilita Cloud Build.

    gcloud services enable cloudbuild.googleapis.com

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

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

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

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

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

    Reemplaza los siguientes elementos:

Sistemas operativos compatibles

Para que tus discos virtuales se puedan iniciar en Compute Engine, deben ejecutar uno de los siguientes sistemas operativos:

  • Sistemas operativos Linux:
    • CentOS 6, CentOS 7
    • Debian 8, Debian 9
    • Red Hat Enterprise Linux 6, Red Hat Enterprise Linux 7
    • Ubuntu 14.04 LTS, Ubuntu 16.04 LTS
  • Sistemas operativos Windows:
    • Windows Server 2008 R2 SP1
    • Windows Server 2012, Windows Server 2012 R2, Windows Server 2012 R2 Core
    • Windows Server 2016, Windows Server 2016 Core
    • Windows Server 2019, Windows Server 2019 Core
    • Windows 7 SP1 (32 y 64 bits, solo BYOL)
    • Windows 8.1 (32 y 64 bits, solo BYOL)
    • Windows 10, versiones 1709, 1803, 1903, 1909 (32 y 64 bits, solo BYOL)

Limitaciones

Esta función tiene las siguientes limitaciones:

  • Los discos virtuales de Linux deben usar grub como el bootloader.
  • Los bootloaders UEFI no son compatibles con Windows ni con Linux.
  • Los discos virtuales de Linux deben cumplir con los mismos requisitos que las imágenes de SO personalizadas, incluida la compatibilidad con dispositivos del controlador de almacenamiento Virtio-SCSI.
  • Cuando se instala software incluido en la lista blanca de aplicaciones, como Cb Protection de Carbon Black, en discos virtuales de Windows, el proceso de importación puede fallar. Es posible que debas desinstalar el software antes de la importación.
  • Si importas un disco virtual que ejecuta RHEL, se admite el modelo Usa tu propia licencia (BYOL) solo si se instala el paquete python-boto en el disco virtual antes de la importación.
  • Los sistemas operativos en discos virtuales deben ser compatibles con ACPI.

Permisos

La herramienta de importación de imágenes realiza varios pasos cuando importas un archivo de disco virtual, incluida la carga del archivo a Cloud Storage, la creación de un depósito nuevo, si es necesario, la descarga del archivo a Compute Engine y la creación de una imagen en Compute Engine desde el archivo del disco. Este proceso se realiza de forma automática. Para tener una experiencia perfecta cuando uses esta función, Google recomienda que tu cuenta tenga las siguientes funciones:

  • roles/storage.admin
  • roles/viewer
  • roles/resourcemanager.projectIamAdmin

El proceso de importación usa la cuenta de servicio predeterminada de Compute Engine como parte de su flujo de trabajo. Según la configuración predeterminada, esta cuenta tiene el permiso roles/editor, que basta para el proceso. Sin embargo, si modificaste las funciones y los permisos predeterminados de la cuenta de servicio de Compute Engine, asegúrate de que la cuenta de servicio aún tenga las siguientes funciones:

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

Importa discos virtuales

Verifica la compatibilidad

Antes de intentar importar el disco para tu VM, descarga y ejecuta la herramienta de verificación previa dentro de la VM. Esta herramienta busca problemas de compatibilidad que puedan provocar que el proceso de importación falle o que el disco no funcione de forma adecuada en Compute Engine.

Importa un disco virtual que se pueda iniciar

Console

  1. En Google Cloud Console, sube el archivo de disco virtual a Cloud Storage.
  2. Ve a la página Crear una imagen.

    Ir a la página Crear una imagen

  3. Especifica un Nombre para tu imagen.
  4. En Fuente, selecciona Disco virtual (VMDK, VHD, etcétera).
  5. Busca o ingresa de forma manual la ubicación de almacenamiento para el archivo de Cloud Storage.
  6. Selecciona el sistema operativo que está disponible en el disco importado. También puedes realizar los siguientes cambios:

    • Puedes elegir Instalar paquetes de invitado. Google recomienda que instales el entorno invitado. Para obtener más información sobre el entorno invitado, consulta Entorno del invitado.

    • Para los sistemas operativos Windows o Red Hat Enterprise Linux (RHEL), puedes elegir una opción de licencia. Puedes permitir que Compute Engine proporcione una licencia o usar tu propia licencia. Para obtener más información sobre cómo usar tu propia licencia en Windows, consulta Usa tu propia licencia.

  7. Especifica propiedades adicionales para tu imagen (opcional). Por ejemplo, puedes organizar esta imagen como parte de una familia de imágenes.

  8. Haz clic en Crear para importar la imagen.

gcloud

Usa el comando gcloud compute images import para crear una imagen de Compute Engine que se pueda iniciar. Aunque Compute Engine puede iniciar la mayoría de las imágenes de disco de arranque, el comando import asegura que el disco tenga los controladores necesarios y los últimos paquetes de entorno invitado, que son necesarios para iniciar una instancia y conectarse a ella mediante SSH o RDP.

Puedes importar archivos de discos virtuales desde un depósito de Cloud Storage o desde tu estación de trabajo local.

Si importas el archivo de disco virtual desde tu estación de trabajo, la herramienta de importación sube el archivo a un depósito de Cloud Storage de forma automática.

Si lo prefieres, puedes subir el archivo de disco virtual a Cloud Storage de forma manual antes de comenzar con el proceso de importación. Sin embargo, debes subir el archivo a un depósito de almacenamiento que se encuentre en el mismo proyecto que se usará para el proceso de importación.

gcloud beta compute images import image-name \
    --source-file source-file \
    --os os

Reemplaza los siguientes elementos:

  • image-name es el nombre de la imagen de destino.
  • source-file es el archivo del disco virtual. Puede ser un archivo local o un archivo almacenado en Cloud Storage. Si tu disco virtual es un archivo local, puedes proporcionar una ruta absoluta o relativa. Si tu archivo de disco virtual ya se almacenó en Cloud Storage, debe existir en un depósito de almacenamiento en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta completa del archivo en formato gs://bucket-name/object-name.
  • os es el sistema operativo de --source-file. Debe ser una imagen con licencia BYOL o una de las siguientes opciones:

    • centos-6, centos-7
    • debian-8, debian-9
    • rhel-6, rhel-7
    • ubuntu-1404, ubuntu-1604
    • windows-2008r2, windows-2012, windows-2012r2, windows-2016 o windows-2019

    Asistencia para Usa tu propia licencia (Beta)

    De forma predeterminada, los discos virtuales que usan los sistemas operativos Windows Server y Red Hat Enterprise Linux (RHEL) se importan y configuran como imágenes de SO premium que generan costos adicionales.

    • Si deseas usar tus propias suscripciones a software de RHEL, puedes importar los discos como imágenes con licencia de Usa tu propia licencia de BYOL. Para ello, especifica uno de los siguientes valores de BYOL para la marca --os:

      • rhel-6-byol
      • rhel-7-byol
    • Si deseas usar tu propia licencia para Windows, puedes importar los discos como imágenes con licencia de BYOL. Para ello, especifica uno de los siguientes valores de BYOL para la marca --os:

      • windows-2008r2-byol
      • windows-2012-byol
      • windows-2012r2-byol
      • windows-2016-byol
      • windows-2019-byol
      • windows-7-x64-byol
      • windows-7-x86-byol
      • windows-8-x64-byol
      • windows-8-x86-byol
      • windows-10-x64-byol
      • windows-10-x86-byol

Si especificas un archivo local, la operación de carga puede llevar mucho tiempo en función del tamaño del disco virtual y la velocidad de la conexión de red. La importación puede tardar varios minutos en ejecutarse en función del tamaño del disco.

Comando de muestra

En el siguiente ejemplo, se importa un disco virtual debian-9 llamado my_server.vmdk y almacenado en gs://your_gcs_bucket.

gcloud beta compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_server.vmdk \
    --os debian-9

Parámetros opcionales

De forma predeterminada, se agregan paquetes de entorno invitado a todas las imágenes de disco de arranque importadas. Si no deseas estos paquetes, agrega la marca --no-guest-environment a tu comando de importación.

Importa un disco virtual que no se pueda iniciar

Console

  1. En Google Cloud Console, sube el archivo de disco virtual a Cloud Storage.
  2. Ve a la página Crear una imagen

    Ir a la página Crear una imagen

  3. Especifica un Nombre para tu imagen.
  4. En Fuente, selecciona Disco virtual (VMDK, VHD, y demás).
  5. Busca o ingresa de forma manual la ubicación de almacenamiento del archivo de Cloud Storage.
  6. En sistema operativo, selecciona No hay sistema operativo. Solo datos.
  7. Especifica propiedades adicionales para tu imagen (opcional). Por ejemplo, puedes organizar esta imagen como parte de una familia de imágenes.
  8. Haz clic en Crear para importar la imagen.

gcloud

Puedes usar el comando gcloud compute images import para crear una imagen de Compute Engine que no se pueda iniciar. Si el disco virtual no contiene un sistema operativo instalado que se pueda iniciar, puedes importarlo con la marca --data-disk, en lugar de la marca --os. De esta forma, se omite el paso de instalación de controladores y paquetes de entorno invitado que hacen que la imagen se pueda iniciar en Compute Engine.

gcloud compute images import image-name \
    --source-file source-file \
    --data-disk

Reemplaza los siguientes elementos:

  • image-name es el nombre de la imagen de destino.
  • source-file es el archivo del disco virtual. Puede ser un archivo local o un archivo almacenado en Cloud Storage. Si tu archivo de disco virtual es local, puedes usar una ruta de acceso absoluta o relativa. Si tu archivo de disco virtual ya se almacenó en Cloud Storage, debe existir en un depósito de almacenamiento en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta completa del archivo en formato gs://bucket-name/object-name.

Comando de muestra

En el siguiente ejemplo, se importa un disco virtual llamado my-disk.vmdk, almacenado en gs://my-gcs-bucket/.

gcloud compute images import my-imported-image \
    --source-file gs://my-gcs-bucket/my-disk.vmdk \
    --data-disk

Haz que una imagen se pueda iniciar

Si tienes una imagen personalizada de Compute Engine que contiene un sistema operativo que se puede iniciar, pero que no tiene los controladores o los paquetes de entorno invitado necesarios de Compute Engine, puedes usar la herramienta de importación de imágenes para hacer que la imagen se pueda iniciar en Compute Engine.

Usa la marca --source-image a fin de especificar una imagen personalizada para que se pueda iniciar, en lugar de usar la marca --source-file, que especifica un disco nuevo que se importará.

gcloud compute images import image-name \
    --source-image source-image-name \
    --os os

Reemplaza los siguientes elementos:

  • image-name es el nombre de la imagen de destino.
  • source-image-name es el nombre de la imagen de origen.
  • os es el sistema operativo de --source-image. Debe ser una imagen con licencia BYOL o una de las siguientes opciones:
    • centos-6, centos-7
    • debian-8, debian-9
    • rhel-6, rhel-7
    • ubuntu-1404, ubuntu-1604
    • windows-2008r2,windows-2012,windows-2012r2, windows-2016 o windows-2019

Asistencia para Usa tu propia licencia

  • Si usas tus propias suscripciones a software de RHEL, puedes hacer que la imagen con licencia de Usa tu propia licencia de BYOL se pueda iniciar. Para ello, especifica uno de los siguientes valores de BYOL para la marca --os:

    • rhel-6-byol
    • rhel-7-byol
  • Si usas una imagen de Usa tu propia licencia para Windows, puedes hacer que la imagen con licencia de BYOL se pueda iniciar. Para ello, especifica uno de los siguientes valores de BYOL para la marca --os:

    • windows-2008r2-byol
    • windows-2012-byol
    • windows-2012r2-byol
    • windows-2016-byol
    • windows-2019-byol
    • windows-7-x64-byol
    • windows-7-x86-byol
    • windows-8-x64-byol
    • windows-8-x86-byol
    • windows-10-x64-byol
    • windows-10-x86-byol

Comando de muestra

En el siguiente ejemplo, se convierte una imagen de Compute Engine llamada my-image en una imagen que se puede iniciar denominada my-bootable-image. En este ejemplo, el sistema operativo instalado en la imagen es Ubuntu 16.04.

gcloud compute images import
my-bootable-image --source-image=my-image --os=ubuntu-1604

Limpia los recursos

Los archivos almacenados en Cloud Storage y las imágenes de Compute Engine generan costos. La herramienta de importación importa el archivo del disco virtual a Cloud Storage y crea una imagen personalizada de Compute Engine.

Una vez que verifiques que la imagen se importó de forma correcta y que se inicia sin problemas como una instancia de Compute Engine, puedes borrar el archivo del disco virtual de Cloud Storage. La herramienta muestra el URI del archivo mientras se sube a Cloud Storage. Este URI tiene el siguiente formato: gs://bucket-name/tmpimage/image-name.

Si importaste una imagen mediante la marca --data-disk y, luego, ejecutaste la herramienta de import por segunda vez con la marca --source-image para hacer que la imagen se pueda iniciar, la primera imagen seguirá existiendo. Si no la necesitas, puedes borrarla. Si especificas el mismo nombre de imagen para las marcas --image y --source-image, la imagen se reemplaza de forma automática y no se requiere otra limpieza.

Próximos pasos