Importar imágenes de máquinas desde dispositivos virtuales


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

Este documento describe los pasos para importar una imagen de máquina desde un dispositivo virtual .

Antes de comenzar

Limitaciones y restricciones

  • Puede compartir una imagen de máquina entre proyectos. Sin embargo, no se admiten redes de VPC compartidas .
  • Esta característica no es compatible con proyectos protegidos con controles de servicio de VPC .
  • No se pueden crear imágenes de máquina a partir de máquinas virtuales de origen que tengan más de 200 TB de discos conectados.

Sistemas operativos compatibles

Para obtener compatibilidad con el sistema operativo, consulte Detalles del sistema operativo .

Importar imágenes de máquinas

Puede importar imágenes de máquinas desde dispositivos virtuales mediante la CLI de Google Cloud o la API de Cloud Build .

nube de gcloud

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

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

Reemplace lo siguiente:

  • MACHINE_IMAGE_NAME : nombre de la imagen de la máquina que desea importar.
  • SOURCE_URI : ruta a su archivo OVA u OVF en Cloud Storage.
  • OS : sistema operativo del archivo OVA. Esta bandera es opcional de forma predeterminada, pero puede ser necesaria en algunos casos. Le recomendamos que proporcione esta bandera.

Ejemplo

Por ejemplo, puedes usar el siguiente comando gcloud para importar una imagen de máquina llamada my-machine-image desde un archivo OVA de origen llamado my-ova que está almacenado 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

DESCANSAR

  1. Cargue el dispositivo virtual en Cloud Storage .

  2. Envíe una solicitud POST al método projects.builds.create .

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

    Reemplace lo siguiente:

    • PROJECT_ID : ID del proyecto al que desea importar el archivo OVA.
    • MACHINE_IMAGE_NAME : nombre de la imagen de la máquina a importar. Por ejemplo, my-machine-image .
    • SOURCE_URI : URI para el archivo OVA o un directorio que contiene paquetes OVF almacenados en Cloud Storage. Por ejemplo, gs://my-bucket/my-instance.ova .
    • OS : sistema operativo del archivo OVA. Por ejemplo, ubuntu-1604 . Esta bandera es opcional de forma predeterminada, pero puede ser necesaria en algunos casos. Le recomendamos que proporcione esta bandera.

    Para conocer valores args adicionales que se pueden proporcionar, consulta la sección de indicadores opcionales de la página de GitHub de importación de OVF de Compute Engine .

Importar imágenes de máquinas con anulaciones de OVF

Cuando importa una imagen de máquina desde un dispositivo virtual, puede anular la configuración en el archivo OVF. Por ejemplo, puede cambiar la configuración de la CPU o la memoria, o puede utilizar una red personalizada.

CPU y memoria personalizadas

Para anular la configuración de CPU o memoria especificada en el archivo OVF, complete los siguientes pasos:

nube de gcloud

Para anular la configuración de CPU o memoria especificada en el archivo OVF, siga los pasos de la CLI de Google Cloud para importar una imagen de máquina y especificar los indicadores --custom-cpu y --custom-memory .

Ejemplo

Una imagen de máquina llamada my-machine-image tiene las siguientes anulaciones aplicadas 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, ejecute 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

DESCANSAR

Para 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 especificar el argumento -machine-type . Este -machine-type representa un tipo de máquina personalizada predefinida o de la serie N1 que se utilizará.

Ejemplo

Una imagen de máquina llamada my-machine-image en el proyecto my-project tiene las siguientes anulaciones aplicadas a la configuración en el archivo OVF:

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

Para importar my-machine-image con estas anulaciones, realice la siguiente solicitud a la API de Cloud Build.

POST https://cloudbuild.googleapis.com/v1/projects/my-project/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"
}

Redes personalizadas

Para anular la configuración de red especificada en el archivo OVF, complete los siguientes pasos:

nube de gcloud

Para configurar una red personalizada, siga los pasos de la CLI de Google Cloud para importar una imagen de máquina y especificar una marca --network . Si la red está configurada con un modo de subred personalizado, también debe especificar los indicadores --subnet y --zone .

Ejemplo

Una imagen de máquina llamada my-machine-image tiene las siguientes anulaciones aplicadas 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, ejecute 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

DESCANSAR

Para utilizar una red personalizada, siga los pasos REST para importar una imagen de máquina y especificar un argumento -network . Si la red está configurada con un modo de subred personalizado, también debe especificar los argumentos -subnet y -zone .

Ejemplo

Una imagen de máquina llamada my-machine-image tiene las siguientes anulaciones aplicadas 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, realice 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"
}

Reemplace PROJECT_ID con su ID de proyecto.

Importar una imagen de máquina dentro de una red que no permite IP externa

Para importar una imagen de máquina usando una red que no permite direcciones IP externas, complete los siguientes pasos:

  1. Agregue el dispositivo virtual a Cloud Storage .

  2. El proceso de importación requiere que los administradores de paquetes estén instalados en el sistema operativo para la imagen de la máquina. Es posible que estos administradores de paquetes necesiten realizar solicitudes a repositorios de paquetes que están fuera Google Cloud. Para permitir el acceso a estas actualizaciones, debe configurar Cloud NAT. Para obtener más información, consulte Crear una configuración NAT mediante Cloud Router .

  3. Configurar el acceso privado a Google . Para obtener más información, consulte Configuración del acceso privado a Google .

  4. Importe la imagen de la máquina utilizando la CLI de Google Cloud o la API de Cloud Build.

    Cuando importa una imagen de máquina desde un dispositivo virtual, se crean máquinas virtuales temporales en su proyecto. Para garantizar que a estas máquinas virtuales temporales no se les asignen direcciones IP externas, debe especificar un indicador o argumento adicional.

    Para obtener más información sobre el indicador o argumento requerido, haga clic en las siguientes pestañas:

nube de 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

Reemplace lo siguiente:

  • MACHINE_IMAGE_NAME : nombre de la imagen de la máquina que desea importar.
  • SOURCE_URI : URI para su archivo OVA u OVF en Cloud Storage. Por ejemplo, gs://my-bucket/Ubuntu.ova .
  • OS : sistema operativo del archivo OVA. Esta bandera es opcional de forma predeterminada, pero puede ser necesaria en algunos casos. Le recomendamos que proporcione esta bandera. Para obtener una lista de los valores admitidos, consulta las opciones de marca --os para el comando gcloud compute machine-images import .
  • ZONE : la zona en la que importar la imagen de la máquina. Si se deja en blanco, se utiliza la zona predeterminada para el proyecto.

DESCANSAR

Envíe una solicitud POST al método projects.builds.create mediante la API de Cloud Build . Especifique 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"
}

Reemplace lo siguiente:

  • PROJECT_ID : el ID del proyecto al que desea importar la imagen de la máquina.
  • MACHINE_IMAGE_NAME : el nombre de la imagen de la máquina que se importará. Por ejemplo, my-machine-image .
  • SOURCE_URI : el URI del archivo OVA almacenado en Cloud Storage. Por ejemplo, gs://my-bucket/my-machine.ova .
  • OS : el sistema operativo del archivo OVA. Por ejemplo, ubuntu-1604 . Esta bandera es opcional de forma predeterminada, pero puede ser necesaria en algunos casos. Le recomendamos que proporcione esta bandera. Para obtener una lista de valores admitidos, consulta las opciones de marca --os para el comando gcloud compute instances import .
  • ZONE : la zona en la que importar la imagen de la máquina.

Importar una imagen de máquina usando cuentas de servicio personalizadas

Durante la importación de una imagen de máquina, se crean instancias temporales de máquina virtual (VM) en su proyecto. La herramienta de importación en estas máquinas virtuales temporales debe estar autenticada.

Una cuenta de servicio es una identidad adjunta a una máquina virtual. Se puede acceder a los tokens de acceso a la cuenta de servicio a través del servidor de metadatos de la VM y usarlos para autenticar la herramienta de importación en la VM.

De forma predeterminada, el proceso de importación utiliza la cuenta de servicio predeterminada de Compute Engine . Sin embargo, si la cuenta de servicio predeterminada de Compute Engine está deshabilitada en su proyecto o si desea utilizar una cuenta de servicio de Compute Engine personalizada, deberá crear una cuenta de servicio y especificarla para el proceso de importación.

nube de gcloud

  1. Agregue el dispositivo virtual a Cloud Storage .

  2. Cree una cuenta de servicio y asigne los roles mínimos. Para obtener más información sobre la creación de cuentas de servicio, consulte Creación y administración de 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

    Estos roles mínimos son necesarios para la cuenta de servicio especificada para la marca --compute-service-account . Para obtener más información, consulta Otorgar roles requeridos a la cuenta de servicio de Compute Engine .

  3. Usa el comando gcloud compute machine-images import para importar 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
    

    Reemplace lo siguiente:

    • MACHINE_IMAGE_NAME : nombre de la imagen de la máquina que desea importar.
    • SOURCE_URI : ruta a su archivo OVA u OVF en Cloud Storage.
    • OS : sistema operativo del archivo OVA. Esta bandera es opcional de forma predeterminada, pero puede ser necesaria en algunos casos. Le recomendamos que proporcione esta bandera.
    • TEMP_SERVICE_ACCOUNT_EMAIL : la dirección de correo electrónico asociada con la cuenta de servicio personalizada creada en el paso anterior. Esta cuenta de servicio la utilizan las máquinas virtuales temporales. Si no se especifica, la VM usa la cuenta de servicio predeterminada de Compute Engine.
    • SERVICE_ACCOUNT_EMAIL : 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; puede personalizar esta cuenta de servicio según sea necesario. Si no se especifica, la cuenta de servicio predeterminada de Compute Engine se adjunta a la VM.
    • SCOPES : especifique el nivel de acceso para la opción --service-account . Si no se especifica, se utilizan los ámbitos predeterminados. Para obtener más información, revise la marca --scopes .

DESCANSAR

  1. Agregue el dispositivo virtual a Cloud Storage .

  2. Cree una cuenta de servicio y asigne los roles mínimos. Para obtener más información sobre la creación de cuentas de servicio, consulte Crear 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

    Estos roles mínimos son necesarios para la cuenta de servicio especificada para el argumento -compute-service-account . Para obtener más información, consulta Otorgar roles requeridos a la cuenta de servicio de Compute Engine .

  3. Envíe una solicitud POST al método projects.builds.create mediante 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"
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto al que desea importar la imagen de la máquina.
    • MACHINE_IMAGE_NAME : el nombre de la imagen de la máquina que se importará. Por ejemplo, my-machine-image .
    • SOURCE_URI : el URI del archivo OVA almacenado en Cloud Storage. Por ejemplo, gs://my-bucket/my-machine.ova .
    • OS : el sistema operativo del archivo OVA. Por ejemplo, ubuntu-1604 . Esta bandera es opcional de forma predeterminada, pero puede ser necesaria en algunos casos. Le recomendamos que proporcione esta bandera. Para obtener una lista de valores admitidos, consulta las opciones de marca --os para el comando gcloud compute instances import .
    • ZONE : la zona en la que importar la imagen de la máquina.
    • TEMP_SERVICE_ACCOUNT_EMAIL : la dirección de correo electrónico asociada con la cuenta de servicio personalizada creada en el paso anterior. Esta cuenta de servicio la utilizan las máquinas virtuales temporales. Si no se especifica, la VM usa la cuenta de servicio predeterminada de Compute Engine.
    • SERVICE_ACCOUNT_EMAIL : 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; puede personalizar esta cuenta de servicio según sea necesario. Si no se especifica, la cuenta de servicio predeterminada de Compute Engine se adjunta a la VM.
    • SCOPES : especifique el nivel de acceso para la opción --service-account . Si no se especifica, se utilizan los ámbitos predeterminados. Para obtener más información, revise la marca --scopes .

¿Qué sigue?