Importa imágenes de máquina desde dispositivos virtuales


Usa una imagen de máquina para almacenar la configuración, los metadatos, los permisos y los datos de uno o más discos de una instancia de VM que se ejecuta en Compute Engine. Para obtener información sobre cuándo y cómo usar las imágenes de máquina, consulta Imágenes de máquina.

En este documento, se describen los pasos para importar una imagen de máquina desde un dispositivo virtual.

Antes de comenzar

  • Si el proyecto en el que quieres importar la imagen 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.
  • Revisa los requisitos de las VM de origen y de los archivos OVF en la guía para importar dispositivos virtuales de Compute Engine.
  • Si deseas obtener información a fin de cumplir con los requisitos antes de importar imágenes de máquinas, consulta Requisitos 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

Limitaciones y restricciones

  • Puedes compartir una imagen de máquina entre proyectos. Sin embargo, las redes de VPC compartidas no son compatibles.
  • Esta función no es compatible con los proyectos protegidos con los Controles del servicio de VPC.
  • Las imágenes de máquina no se pueden crear a partir de VM de origen que tengan más de 200 TB en discos conectados.

Sistemas operativos compatibles

Para obtener información sobre la compatibilidad del sistema operativo, consulta Detalles de los sistemas operativos.

Importa imágenes de máquina

Puedes importar imágenes de máquina desde dispositivos virtuales mediante Google Cloud CLI o REST.

gcloud

Usa el comando gcloud compute machine-images import para crear una imagen de máquina desde dispositivos virtuales.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=gs:SOURCE_URI \
    --os=OS

Reemplaza lo siguiente:

  • MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que deseas importar.
  • SOURCE_URI: Es la ruta de acceso a tu archivo OVA o OVF en Cloud Storage.
  • OS: El sistema operativo del archivo OVA. De forma predeterminada, esta marca es opcional, pero se podría necesitar en algunos casos. Te recomendamos que proporciones esta marca.

Ejemplo

Por ejemplo, puedes usar el siguiente comando de gcloud para importar una imagen de máquina llamada my-machine-image desde un archivo OVA de origen llamado my-ova que se almacena en el directorio gs://my-bucket y ejecuta centos-7:

gcloud compute machine-images import my-machine-image  \
    --source-uri=gs://my-bucket/my-ova/ \
    --os=centos-7

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":[
           "-machine-image-name=MACHINE_IMAGE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":"gce-ovf-machine-image-import"
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto en el que deseas importar el archivo OVA
    • MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que se creará. Por ejemplo, my-machine-image
    • SOURCE_URI: Es el URI para el archivo OVA o un directorio que contiene paquetes OVF que se almacena en Cloud Storage. Por ejemplo, gs://my-bucket/my-instance.ova.
    • OS: El sistema operativo del archivo OVA. Por ejemplo, ubuntu-1604 De forma predeterminada, esta marca es opcional, pero se podría necesitar en algunos casos. Te recomendamos que proporciones esta marca.

    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.

Importa imágenes de máquina con anulaciones de OVF

CPU y memoria personalizadas

gcloud

Para anular la configuración de CPU o memoria especificada en el archivo OVF, sigue los pasos de Google Cloud CLI paraimportar una imagen de máquina y especifica las marcas --custom-cpu y --custom-memory.

Ejemplo

A una imagen de máquina llamada my-machine-image se le aplican las siguientes anulaciones a la configuración del archivo OVF:

  • Sistema operativo: Ubuntu 1404
  • CPU: 2 CPUs
  • Memoria: 2048 MB

Para importar my-machine-image con estas anulaciones, ejecuta el siguiente comando:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

REST

A fin de anular la configuración de CPU o memoria especificada en el archivo OVF, sigue los pasos de la API de Compute Engine para importar una imagen de máquina y especifica el argumento -machine-type. Este -machine-type representa un tipo de máquina predefinido o personalizado para usar.

Ejemplo

A una imagen de máquina llamada my-machine-image se le aplican las siguientes anulaciones a la configuración del archivo OVF:

  • Sistema operativo: Ubuntu 1404
  • CPU: 2 CPUs
  • Memoria: 2048 MB

Para importar my-machine-image con estas anulaciones, realiza la siguiente solicitud a la API de Compute Engine.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Reemplaza PROJECT_ID con el ID del proyecto.

Redes personalizadas

gcloud

A fin de configurar una red personalizada, sigue los pasos de Google Cloud CLI para importar una imagen de máquina 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

A una imagen de máquina llamada my-machine-image se le aplican las siguientes anulaciones a la configuración del archivo OVF:

  • Sistema operativo: Ubuntu 1404
  • Red: custom-vpc-network
  • Subred: company-vpc-us-east1-c
  • Zona: us-east1-c

Para importar my-machine-image con estas anulaciones, ejecuta el siguiente comando de ejemplo:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --network=custom-vpc-network \
    --subnet=company-vpc-us-east1-c \
    --zone=us-east1-c

REST

A fin de usar una red personalizada, sigue los pasos de la API de Compute Engine para importar una imagen de máquina 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

A una imagen de máquina llamada my-machine-image se le aplican las siguientes anulaciones a la configuración del archivo OVF:

  • Sistema operativo: Ubuntu 1404
  • Red: custom-vpc-network
  • Subred: company-vpc-us-east1-c
  • Zona: us-central1-c

Para importar my-machine-image con estas anulaciones, realiza la siguiente solicitud a la API de Compute Engine.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-zone=us-central1-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=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Reemplaza PROJECT_ID con el ID del proyecto.

Importa una imagen de máquina dentro de una red que no permita una IP externa

Para importar una imagen de máquina con una red que no permita 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 imagen de máquina. 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 más información, consulta Configura el acceso privado a los servicios.

  4. Importa la imagen de máquina con Google Cloud CLI o la API de Cloud Build.

    Cuando importas una imagen de máquina 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 sobre la marca o el argumento requerido, haz clic en las siguientes pestañas:

gcloud

Usa el comando gcloud compute machine-images import con la marca --no-address:

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=SOURCE_URI \
    --os=OS \
    --zone=ZONE \
    --no-address

Reemplaza lo siguiente:

  • MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que deseas importar.
  • SOURCE_URI: El URI para tu archivo OVA o OVF en Cloud Storage. Por ejemplo, gs://my-bucket/Ubuntu.ova
  • OS: El sistema operativo del archivo OVA. De forma predeterminada, esta marca es opcional, pero se podría necesitar en algunos casos. Te recomendamos que proporciones esta marca. Si deseas obtener una lista de los valores admitidos, consulta las opciones de la marca --os para el comando gcloud compute machine-images import.
  • ZONE: La zona en la que se importará la imagen de máquina. Si se deja en blanco, se usa la zona predeterminada del proyecto

REST

Usa la API de Cloud Build y especifica el argumento -no-external-ip.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=MACHINE_IMAGE_NAME",
        "-ovf-gcs-path=SOURCE_URI",
        "-os=OS",
        "-zone=ZONE",
        "-no-external-ip",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que deseas importar la imagen.
  • MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que se creará. Por ejemplo, my-machine-image
  • SOURCE_URI: El URI del archivo OVA que se almacena en Cloud Storage. Por ejemplo, gs://my-bucket/my-machine.ova
  • OS: El sistema operativo del archivo OVA. Por ejemplo, ubuntu-1604. De forma predeterminada, esta marca es opcional, pero se podría necesitar en algunos casos. Te recomendamos que proporciones esta marca. Si deseas obtener una lista de los valores admitidos, consulta las opciones de la marca --os para el comando gcloud compute instances import.
  • ZONE: La zona en la que se importará la imagen de máquina.

Importa una imagen de máquina con cuentas de servicio personalizadas

Durante una importación de imagen de máquina, se crean instancias de máquina virtual (VM) temporal 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 VM 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 machine-images import para crear una imagen de máquina desde dispositivos virtuales.

    gcloud compute machine-images import MACHINE_IMAGE_NAME \
        --source-uri=gs:SOURCE_URI \
        --os=OS \
        --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --scopes=SCOPES
    

    Reemplaza lo siguiente:

    • MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que deseas importar.
    • SOURCE_URI: Es la ruta de acceso a tu archivo OVA o OVF en Cloud Storage.
    • OS: El sistema operativo del archivo OVA. De forma predeterminada, esta marca es opcional, pero se podría necesitar en algunos casos. Te recomendamos que proporciones esta marca.
    • 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: Es la dirección de correo electrónico asociada con la cuenta de servicio personalizada que se adjuntará a cualquier VM creada a partir de esta imagen de máquina. 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. 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":[
          "-machine-image-name=MACHINE_IMAGE_NAME",
          "-ovf-gcs-path=SOURCE_URI",
          "-os=OS",
          "-zone=ZONE",
          "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
          "-service-account=SERVICE_ACCOUNT_EMAIL",
          "-client-id=api",
          "-timeout=7000s"
        ],
        "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
        "env":[
          "BUILD_ID=$BUILD_ID"
        ]
      }
    ],
    "tags":"gce-ovf-machine-image-import"
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto en el que deseas importar la imagen.
    • MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que se creará. Por ejemplo, my-machine-image
    • SOURCE_URI: El URI del archivo OVA que se almacena en Cloud Storage. Por ejemplo, gs://my-bucket/my-machine.ova
    • OS: El sistema operativo del archivo OVA. Por ejemplo, ubuntu-1604. De forma predeterminada, esta marca es opcional, pero se podría necesitar en algunos casos. Te recomendamos que proporciones esta marca. Si deseas obtener una lista de los valores admitidos, consulta las opciones de la marca --os para el comando gcloud compute instances import.
    • ZONE: La zona en la que se importará la imagen de máquina.
    • 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: Es la dirección de correo electrónico asociada con la cuenta de servicio personalizada que se adjuntará a cualquier VM creada a partir de esta imagen de máquina. 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.

Próximos pasos