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 Migra VM a Compute Engine.
Antes de comenzar
- Si hay una política de imágenes confiables definida para el proyecto en el que importas la imagen, agrega
projects/compute-image-import
yprojects/compute-image-tools
a la lista de publicadores permitidos. - Para obtener información sobre cómo cumplir con los requisitos antes de importar imágenes, consulta Requisitos previos 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
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
-
Sistemas operativos compatibles
Puedes importar discos que se pueden iniciar y discos que no se pueden iniciar. Para que los discos virtuales se puedan iniciar en Compute Engine, deben ejecutar uno de los sistemas operativos compatibles.
Compatibilidad con BYOL y BYOS
Si prefieres usar tu propia licencia de software o suscripción a este, puedes importar tus discos virtuales con sus licencias. Para obtener información sobre los sistemas operativos compatibles con BYOL o BYOS, consulta Detalles de los sistemas operativos.
Puedes importar imágenes con licencias existentes mediante el comando gcloud compute instances import
con la marca --byol
.
Limitaciones
Esta función tiene las siguientes limitaciones generales:
Si importas un disco virtual que ejecuta RHEL, se admite la licencia adquirida por el usuario (BYOL) solo si el paquete python-boto se instala en el disco virtual antes de la importación.
Los sistemas operativos en discos virtuales deben ser compatibles con ACPI.
Esta función no es compatible con los proyectos protegidos con los Controles del servicio de VPC. Para esos entornos, consulta Importa discos de arranque de forma manual.
No puedes importar imágenes de Arm con la herramienta de importación de imágenes. Para importar imágenes de Arm, sigue las instrucciones paso a paso que se describen en Importa discos de arranque de forma manual.
Compute Engine no es compatible con discos encriptados de software de importación porque no se pueden leer sin una clave. En particular, no puedes importar imágenes de Windows 10 y versiones posteriores que usen la encriptación de unidad BitLocker.
Esta función tiene las siguientes limitaciones en Linux:
Los discos virtuales de Linux deben usar
grub
como el bootloader.Los discos virtuales de Linux deben cumplir con los mismos requisitos que las imágenes personalizadas, incluida la compatibilidad con dispositivos del controlador de almacenamiento Virtio-SCSI.
Esta función tiene las siguientes limitaciones en Windows:
Cuando un software de la lista de anunciantes permitidos de aplicaciones, como CB Protection de Carbon Black, se instala en discos virtuales de Windows, el proceso de importación puede fallar. Es posible que debas desinstalar el software antes de la importación.
En las VM basadas en Windows, Microsoft KM-TEST Loopback Adapter evita el acceso a la red para el servidor de metadatos y debes inhabilitarlo o quitarlo antes de la importación.
Permisos
Para habilitar una experiencia sin interrupciones cuando importas imágenes, asegúrate de haber otorgado las funciones de IAM necesarias a tu cuenta, a la cuenta de servicio de Cloud Build, y a la cuenta de servicio de Compute Engine. Para obtener más información, consulta Otorga funciones de IAM necesarias.
Comprueba 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.
Importar discos virtuales
Puedes importar tus discos virtuales mediante la consola de Google Cloud, Google Cloud CLI o la API de Cloud Build.
Importa un disco de inicio virtual
En los discos que se pueden iniciar no es necesario especificar el sistema operativo, ya que la herramienta de importación detecta de forma automática el sistema operativo para determinar qué controladores y paquetes son obligatorios. Sin embargo, si necesitas anular el sistema operativo detectado, puedes especificar la marca --os
o el parámetro -os
. Para obtener una lista de los valores admitidos, consulta marca --os
.
Console
- En la consola de Google Cloud, sube el archivo de disco virtual a Cloud Storage.
Ve a la página Crear una imagen.
Especifica un Nombre para tu imagen.
En Fuente, selecciona Disco virtual (VMDK, VHD).
Selecciona la cuenta de servicio de Cloud Build. Puedes usar la cuenta de servicio predeterminada o selecciona una personalizada.
- Si seleccionas una cuenta de servicio que no tiene suficientes permisos para importar una imagen, verás un mensaje con la opción de otorgarle los permisos necesarios. Haz clic en Otorgar para proporcionarle a la cuenta de servicio los permisos necesarios.
Ingresa la Ubicación del registro. Si la cuenta de servicio que seleccionaste es una de Cloud Build, no necesitas proporcionar la ubicación del registro. Para todas las demás cuentas de servicio (incluida la cuenta de servicio predeterminada de Compute Engine), debes proporcionar la ubicación del registro.
Busca o ingresa de forma manual la ubicación de almacenamiento del archivo de Cloud Storage.
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 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 una licencia adquirida por el usuario en Windows, consulta Licencia adquirida por el usuario.
Especifica propiedades adicionales para tu imagen (opcional). Por ejemplo, puedes organizar esta imagen como parte de una familia de imágenes.
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 bucket 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 bucket de Cloud Storage de forma automática.
Si lo prefieres, puedes subir el archivo del disco virtual a Cloud Storage tú mismo antes de comenzar con el proceso de importación. Sin embargo, debes subir el archivo a un bucket de Cloud Storage en el mismo proyecto que se usará para el proceso de importación.
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE
Reemplaza lo siguiente:
IMAGE_NAME
: El nombre de la imagen de destino.SOURCE_FILE
: El archivo del disco virtual. Este archivo 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 el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formatogs://BUCKET_NAME/OBJECT_NAME
.
Si importas una imagen con una licencia existente, especifica la marca --byol
de la siguiente manera:
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE --byol
Si deseas obtener instrucciones para importar imágenes con licencias existentes a Google Cloud, consulta Licencias adquiridas por el usuario.
Si especificas un archivo local, la operación de carga puede tomar 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.
Ejemplo
En el siguiente ejemplo, se importa un disco virtual llamado my_server.vmdk
y almacenado en gs://your_gcs_bucket
.
gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_server.vmdk
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.
REST
Agrega el disco virtual a Cloud Storage.
Envía una solicitud
POST
a la API de Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto en el que deseas importar la imagen.IMAGE_NAME
: Es el nombre de la imagen que se importará.SOURCE_FILE
: Es el URI de la imagen en Cloud Storage, por ejemplo,gs://my-bucket/my-image.vmdk
Para obtener valores
args
adicionales que se puedan proporcionar, consulta la sección de marcas opcionales de la página sobre importación de imágenes de VM en GitHub.Respuesta de ejemplo
El resultado muestra una respuesta similar al siguiente ejemplo:
{ "name": "operations/build/myproject-12345/operation-1578608233418", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": "3a2055bc-ccbd-4101-9434-d376b88b8940", "status": "QUEUED", "createTime": "2019-09-20T15:55:29.353258929Z", "steps": [ { "name": "gcr.io/compute-image-import/gce_vm_image_import:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-timeout=7000s", "-image_name=my-image", "-client_id=api", "-data-disk", "-source_file=gs://my-bucket/my-image.vmdk" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456" } }
Puedes supervisar tu compilación de las siguientes dos maneras:
- Ejecuta una solicitud projects.builds.get mediante el
build-id
que se mostró. - Revisa los registros alojados en la
logUrl
proporcionada.
Importa y agrega una licencia a un disco virtual
Para agregar una licencia cuando importas una imagen, usa el siguiente comando gcloud compute
images import
.
gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE --os=OS
Reemplaza lo siguiente:
IMAGE_NAME
: Es el nombre de la imagen que se creará.SOURCE_FILE
: Es un archivo local o un URI de Cloud Storage del disco virtual que se importará.OS
: Es el SO de la imagen de disco que se importará. La licencia para el SO se infiere del valor de esta marca. No hay una marca explícita para proporcionar información de licencia cuando se importa. Para obtener una lista de los valores admitidos, consulta Marca--os
.
Para obtener más información sobre cómo ver y adjuntar licencias, consulta Visualiza y agrega licencias.
Importa un disco virtual que no se pueda iniciar
Console
- En la consola de Google Cloud, sube el archivo de disco virtual a Cloud Storage.
Ve a la página Crear una imagen.
Especifica un Nombre para tu imagen.
En Fuente, selecciona Disco virtual (VMDK, VHD, y demás).
Busca o ingresa de forma manual la ubicación de almacenamiento del archivo de Cloud Storage.
En sistema operativo, selecciona No hay sistema operativo. Solo datos.
Especifica propiedades adicionales para tu imagen (opcional). Por ejemplo, puedes organizar esta imagen como parte de una familia de imágenes.
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, especifica la marca --data-disk
. 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 lo siguiente:
IMAGE_NAME
: El nombre de la imagen de destino.SOURCE_FILE
: El archivo del disco virtual. Este archivo 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 el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formatogs://BUCKET_NAME/OBJECT_NAME
.
Ejemplo 1: Importa un disco virtual que no se pueda iniciar desde Cloud Storage
En el siguiente ejemplo, se importa un disco virtual llamado my_disk.vmdk
, almacenado en gs://your_gcs_bucket
.
gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_disk.vmdk --data-disk
Ejemplo 2: Importa un archivo VMDK grande mediante la especificación del valor de tiempo de espera
El valor de tiempo de espera predeterminado para el proceso de importación es de dos horas. Los archivos VMDK grandes pueden tardar hasta 24 horas en importarse. Si no especificas la marca --timeout
cuando importas archivos grandes, el proceso falla después de dos horas.
En el siguiente ejemplo, se importa un disco virtual llamado my_disk.vmdk
y almacenado en gs://your_gcs_bucket
. El valor de tiempo de espera para esta importación es de 24 horas.
gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_disk.vmdk --data-disk --timeout=24h
REST
Agrega el disco virtual a Cloud Storage.
Envía una solicitud
POST
a la API de Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-timeout=7000s", "-client_id=api", "-data_disk" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Reemplaza los siguientes valores
args
:PROJECT_ID
: Es el ID del proyecto en el que deseas importar la imagen.IMAGE_NAME
: Es el nombre de la imagen que se importará.SOURCE_FILE
: Es el URI de la imagen en Cloud Storage, por ejemplo,gs://my-bucket/my-image.vmdk
Importa discos mediante redes que no permiten direcciones IP externas
Para importar discos virtuales mediante una red que no permite direcciones IP externas, completa los siguientes pasos:
Agrega el disco virtual a Cloud Storage.
El proceso de importación de imágenes requiere que los administradores de paquetes se instalen en el sistema operativo del disco virtual. 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.
Configura el Acceso privado a Google. Para obtener más información, consulta Configura el acceso privado a los servicios.
Importa el disco virtual mediante Google Cloud CLI o REST.
Cuando importas un disco 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, haz clic en las siguientes pestañas:
gcloud
Usa el comando gcloud compute images import
con la marca --no-address
para importar el disco virtual.
gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE \ --zone=ZONE \ --no-address
Reemplaza lo siguiente:
IMAGE_NAME
: El nombre de la imagen de disco que deseas crear.SOURCE_FILE
: 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 el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formatogs://BUCKET_NAME/OBJECT_NAME
.ZONE
: Es la zona en la que se creará la instancia. Si se deja en blanco, se usa la zona predeterminada del proyecto
REST
Envía una solicitud POST
a la API de Cloud Build y especifica el argumento -no-external-ip
.
POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-zone=ZONE", "-no_external_ip", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto en el que deseas importar la imagen.IMAGE_NAME
: Es el nombre de la imagen que se importará.SOURCE_FILE
: Es el URI de la imagen en Cloud Storage. Por ejemplo,gs://my-bucket/my-image.vmdk
para el comandogcloud compute images import
.ZONE
: Es la zona en la que se creará la instancia. Si se deja en blanco, se usa la zona predeterminada del proyecto
Importa un disco virtual con un bootloader de UEFI
En la mayoría de los discos virtuales, Compute Engine puede detectar y, luego, importar discos de forma correcta mediante un bootloader de UEFI sin necesidad de una marca adicional.
Sin embargo, para situaciones como las siguientes, es posible que debas forzar un inicio UEFI durante la importación.
- Si el proceso de importación de imágenes no detecta el bootloader de UEFI durante la importación.
Si el disco se puede iniciar en doble lugar y tiene una combinación de: hybrid-mbr + UEFI o protective-mbr + UEFI. Para los discos que se pueden iniciar de forma dual, la importación podría permitir el inicio no perteneciente a la UEFI.
gcloud
Puedes usar el comando gcloud compute images import
para forzar una importación a fin de usar el inicio de UEFI.
gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE \ --guest-os-features=UEFI_COMPATIBLE
Reemplaza lo siguiente:
IMAGE_NAME
: Es el nombre de la imagen que se importará.SOURCE_FILE
: Es el URI de la imagen en Cloud Storage, por ejemplo,gs://my-bucket/my-image.vmdk
Ejemplo
En el siguiente ejemplo, se importa un disco virtual llamado my-disk.vmdk
, almacenado en gs://my-gcs-bucket/
, y se obliga a usar el inicio de UEFI.
gcloud compute images import my-imported-image \ --source-file gs://my-gcs-bucket/my-disk.vmdk \ --guest-os-features=UEFI_COMPATIBLE
REST
Para forzar una importación a fin de que use el arranque UEFI, puedes usar la API de Cloud Build y especificar el argumento -uefi_compatible
. Para hacerlo, sigue los pasos que se indican a continuación:
Agrega el dispositivo virtual a Cloud Storage.
Envía una solicitud
POST
a la API de Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-uefi_compatible", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto en el que deseas importar la imagen.IMAGE_NAME
: Es el nombre de la imagen que se importará.SOURCE_FILE
: Es el URI de la imagen en Cloud Storage, por ejemplo,gs://my-bucket/my-image.vmdk
Importa un disco virtual mediante una VPC compartida
Antes de importar un disco virtual que usa una VPC compartida, debes agregar la función compute.networkUser
a la cuenta de servicio de Cloud Build.
Para obtener más información, consulta Otorga funciones necesarias a la cuenta de servicio de Cloud Build.
gcloud
Usa el comando gcloud compute images import
para importar el disco virtual.
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --project SERVICE_PROJECT_ID \ --zone ZONE \ --network NETWORK \ --subnet SUBNET
Reemplaza lo siguiente:
IMAGE_NAME
: El nombre de la imagen que se importará.SOURCE_FILE
: 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 el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formatogs://BUCKET_NAME/OBJECT_NAME
.SERVICE_PROJECT_ID
: El ID del proyecto en el que deseas importar la imagen.ZONE
: La zona a la que deseas importar la imagen. Esta zona debe coincidir con la región de la subred. Por ejemplo, siSUBNET
esus-west1
. La zona de importación debe ser una de las siguientes:us-west1-a
,us-west1-b
ous-west1-c
.NETWORK
: La ruta de acceso completa a una red de VPC compartida. Por ejemplo,projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
.SUBNET
: La ruta de acceso completa a una subred de VPC compartida. Por ejemplo,projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
.Comando de muestra
gcloud compute images import example-image \ --source-file gs://source-bucket/source-file.vmdk \ --project my-image-project \ --zone us-west1-c \ --network projects/my-vpc-project/global/networks/my-shared-vpc \ --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-shared-subnet
REST
Agrega el disco virtual a Cloud Storage.
Envía una solicitud
POST
a la API de Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-zone=ZONE", "-network=NETWORK", "-subnet=SUBNET", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Reemplaza los siguientes valores
args
:SERVICE_PROJECT_ID
: El ID del proyecto en el que deseas importar la imagen.IMAGE_NAME
: Es el nombre de la imagen que se importará.SOURCE_FILE
: El URI para la imagen en Cloud Storage, por ejemplo,gs://my-bucket/my-image.vmdk
.ZONE
: La zona a la que deseas importar la imagen. Esta zona debe coincidir con la región de la subred. Por ejemplo, siSUBNET
esus-west1
. La zona de importación debe ser una de las siguientes:us-west1-a
,us-west1-b
ous-west1-c
.NETWORK
: La ruta de acceso completa a una red de VPC compartida. Por ejemplo,projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
.SUBNET
: La ruta de acceso completa a una subred de VPC compartida. Por ejemplo,projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
.
Importa un disco virtual con una cuenta de servicio personalizada de Compute Engine
Durante una importación de imágenes, se crean instancias de máquina virtual (VM) temporales 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 instancia y usarlos para autenticar la herramienta de importación de imágenes en la VM.
De forma predeterminada, el proceso de importación usa el agente de servicio predeterminado de Compute Engine del proyecto. 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
Agrega el disco virtual a Cloud Storage.
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
Para obtener más información, consulta Otorga funciones necesarias a la cuenta de servicio de Compute Engine.
Usa
gcloud compute images import
para importar la imagen.gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --compute-service-account SERVICE_ACCOUNT_EMAIL
Reemplaza lo siguiente:
IMAGE_NAME
: El nombre de la imagen de destino.SOURCE_FILE
: El archivo del disco virtual. Este archivo 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 el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formatogs://BUCKET_NAME/OBJECT_NAME
.SERVICE_ACCOUNT_EMAIL
: La dirección de correo electrónico asociada con la cuenta de servicio de Compute Engine creada en el paso anterior.
Ejemplo
En el siguiente ejemplo, se importa un disco virtual de arranque que se llama
my_server.vmdk
, almacenado engs://your_gcs_bucket
, mediante una cuenta de servicio que tiene el correo electrónicoimage-export-service-account@proj-12345.iam.gserviceaccount.com
.gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_server.vmdk \ --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
REST
Agrega el disco virtual a Cloud Storage.
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
Para obtener más información, consulta Otorga funciones necesarias a la cuenta de servicio de Compute Engine.
Agrega el disco virtual a Cloud Storage.
Envía una solicitud
POST
a la API de Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-compute_service_account=SERVICE_ACCOUNT_EMAIL", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto en el que deseas importar la imagen.IMAGE_NAME
: Es el nombre de la imagen que se importará.SOURCE_FILE
: Es el URI de la imagen en Cloud Storage, por ejemplo,gs://my-bucket/my-image.vmdk
SERVICE_ACCOUNT_EMAIL
: La dirección de correo electrónico asociada con la cuenta de servicio de Compute Engine creada en el paso anterior.
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
Reemplaza lo siguiente:
IMAGE_NAME
: El nombre de la imagen de destino.SOURCE_IMAGE_NAME
: El nombre de la imagen de origen.Si deseas obtener instrucciones para importar imágenes con licencias existentes a Google Cloud, consulta Licencias adquiridas por el usuario.
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, --os ubuntu-1604
anula el sistema operativo detectado.
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
- Crea una nueva instancia de VM que use tu imagen que se puede iniciar.
- Comparte tu imagen entre proyectos.