Después de crear una imagen de máquina, puedes usarla para hacer copias de la instancia de la VM de origen. Para obtener más información sobre el uso de imágenes de máquina, consulta cuándo usar una imagen de máquina.
Una imagen de máquina contiene la mayor parte de la información y los datos necesarios para clonar una instancia.
Una imagen de máquina no se puede cambiar. Sin embargo, puedes anular casi todas las propiedades de la imagen de máquina cuando creas una instancia a partir de la imagen de máquina.
Puedes crear instancias a partir de imágenes de máquina mediante la consola de Google Cloud, Google Cloud CLI o REST.
Antes de comenzar
-
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 seleccionando una de las siguientes opciones:
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.
Puedes crear, como máximo, 6 VMs a partir de una imagen de máquina de origen en 60 minutos. Si excedes este límite, la operación de creación de la instancia falla y se muestra un error similar al siguiente:
Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'. Too frequent operations from the source resource.
Para crear más VMs que el límite definido (6 VM en 60 minutos), crea imágenes de máquina adicionales a partir de la VM de origen o crea imágenes de máquina de corta duración de las VMs nuevas. Luego, puedes crear la cantidad necesaria de VMs a partir de las imágenes de máquina nuevas.
No puedes crear VMs a partir de imágenes de máquina con discos persistentes regionales conectados mediante la consola de Google Cloud. Usa Google Cloud CLI o REST y especifica los parámetros
replicaZones
ydeviceName
para cada disco persistente regional conectado. Para obtener más información, consulta Crea una VM a partir de una imagen de máquina con anulaciones de propiedad.En la consola de Google Cloud, ve a la página Crea una instancia.
Haz clic en Nueva instancia de VM a partir de una imagen de máquina.
Selecciona la imagen de máquina y haz clic en Continuar.
Opcional: Personaliza los detalles de la VM.
Haz clic en Crear.
VM_NAME
: El nombre de la VM que se creará.ZONE
es la zona para la VM.SOURCE_MACHINE_IMAGE_NAME
es la imagen de máquina a partir de la cual se creará la VM.PROJECT_ID
es el ID de tu proyecto.ZONE
: La zona para la VM.VM_NAME
: El nombre de la VM que se creará.SOURCE_MACHINE_IMAGE_URL
es la URL completa o parcial de la imagen de máquina que deseas usar para crear la VM. Por ejemplo, si tienes una imagen de máquina llamadamy-machine-image
en un proyecto llamadomyProject
. las siguientes URLs son válidas:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- No puedes anular ninguna propiedad del disco conectado que no sea el nombre del disco mientras creas una VM a partir de la imagen de máquina.
Debes especificar el parámetro
replicaZones
para cada disco persistente regional conectado junto con eldeviceName
del disco regional de la imagen de máquina.Si la VM de origen utilizada para generar la imagen de máquina y la nueva VM pertenecen al mismo proyecto y a la misma región, se aplica lo siguiente:
- La mayoría de las propiedades de la instancia de origen y la VM nueva son las mismas. Las propiedades que difieren son aquellas como las direcciones IP efímeras que se asignan automáticamente.
- Si la instancia de VM de origen todavía existe cuando creas una VM nueva, la VM nueva no puede usar el mismo nombre ni la misma zona que la instancia de origen.
Si la VM de origen utilizada para generar la imagen de máquina y la VM nueva pertenecen al mismo proyecto, pero a regiones diferentes, se aplica lo siguiente:
- Debes anular todos los recursos zonales y regionales para la VM nueva. Por ejemplo, si creas una instancia de VM a partir de una imagen de máquina cuya instancia de origen pertenecía a una región diferente, debes anular los recursos regionales como la subred y las reglas de firewall regionales. Sin embargo, los recursos globales, como los balanceadores de cargas y las cuentas de servicio, no necesitan una anulación, a menos que desees modificarlos.
En la consola de Google Cloud, ve a la página Crea una instancia.
Haz clic en Nueva instancia de VM a partir de una imagen de máquina.
Selecciona la imagen de máquina y haz clic en Continuar.
Opcional: Personaliza los detalles de la VM.
Haz clic en Crear.
Para obtener más detalles sobre la configuración, consulta Crea una instancia de VM a partir de una imagen.
PROJECT_ID
: El ID del proyecto.ZONE
: La zona para la VM.VM_NAME
: El nombre de la VM que se creará.NEW_MACHINE_TYPE
: El tipo de máquina que deseas usar para la VM.SOURCE_MACHINE_IMAGE_URL
: La URL completa o parcial de la imagen de máquina que deseas usar para crear la instancia. Por ejemplo, si tienes una imagen de máquina llamadamy-machine-image
en un proyecto llamadomyProject
. las siguientes URLs son válidas:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- Si anulas un campo básico, el campo básico correspondiente en la imagen de máquina se reemplaza por el valor del campo básico en la solicitud. Los campos básicos incluyen parámetros como
machineType
yname
. - Si anulas un campo repetido, todos los valores repetidos de esa propiedad se reemplazan por los valores correspondientes proporcionados en la solicitud.
Por lo general, los campos repetidos son propiedades del tipo
list
. Por ejemplo,disks
ynetworkInterfaces
son campos repetidos. - Si anulas un
nested object
, el objeto en la imagen de máquina se combina con la especificación de objeto correspondiente en la solicitud. Ten en cuenta que, si un objeto anidado está dentro de un campo repetido, el campo se trata de acuerdo con las reglas para campos repetidos. Las etiquetas son una excepción a esta regla y se tratan como un campo repetido, aunque las etiquetas sean del tipoobject
. Otorga acceso a las imágenes de máquina que se almacenan en un proyecto diferente.
Los permisos se pueden otorgar en el proyecto de origen o en la imagen de máquina. Usa el comando
gcloud compute machine-images add-iam-policy-binding
para otorgar los permisos en la imagen de máquina.gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \ --project=MACHINE_IMAGE_PROJECT \ --member='ACCOUNT_EMAIL' \ --role='roles/compute.admin'
Reemplaza lo siguiente:
MACHINE_IMAGE_PROJECT
: El ID del proyecto que contiene la imagen de la máquina de origen.MACHINE_IMAGE_NAME
: El nombre de la imagen de máquina a la que deseas agregar la vinculación del permiso.ACCOUNT_EMAIL
: La dirección de correo electrónico deserviceAccount
ouser
que está crea la VM. Asegúrate de que el correo electrónico tenga un formato que incluya el prefijo obligatorio. El prefijo debe ser uno de los siguientes:user:
: Especifica esto si la dirección de correo electrónico está asociada con una cuenta de usuario. Por ejemplo,user:user@example.com
.serviceAccount:
: Especifica esto si la dirección de correo electrónico está asociada con una cuenta de servicio. Por ejemplo,serviceAccount:123456789000-compute@developer.gserviceaccount.com
.
Ejemplo
Por ejemplo, para agregar una vinculación
compute.admin
a la imagen de la máquina llamadamy-machine-image
al correo electrónico de la cuenta de servicio123456789000-compute@developer.gserviceaccount.com
, usa el siguiente comando degcloud
:gcloud compute machine-images add-iam-policy-binding my-machine-image \ --project=machine-image-project \ --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \ --role='roles/compute.admin'
Otorga al usuario que ejecuta el comando
gcloud compute instances create
el rol de usuario de la cuenta de servicio (roles/iam.serviceAccountUser
) en la cuenta de servicio asociada con la imagen de máquina.Usa el comando
gcloud compute instances create
para crear una VM a partir de una imagen de máquina.gcloud compute instances create VM_NAME \ --project=VM_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --subnet=SUBNET
Reemplaza lo siguiente:
VM_PROJECT_ID
: El ID del proyecto en el que deseas crear la VM.VM_NAME
: El nombre de la VM que se creará.ZONE
: La zona para la VM.MACHINE_IMAGE_PROJECT
: El ID del proyecto en el que se encuentra la imagen de máquina.MACHINE_IMAGE_NAME
: La imagen de máquina a partir de la cual se creará la VM.SERVICE_ACCOUNT_EMAIL
: La dirección de correo electrónico de la cuenta de servicio que deseas conectar a tu VM.SUBNET
: Si la subred y la instancia están en el mismo proyecto, reemplaza SUBNET por el nombre de una subred que esté en la misma región que la instancia.Para especificar una subred en una red de VPC compartida, reemplaza
SUBNET
por una string en el siguiente formato:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Reemplaza lo siguiente:
HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: Es la región de la subred.SUBNET_NAME
: El nombre de la subred
Ejemplo
Por ejemplo, con el siguiente comando, se crea una VM llamada
my-instance
envm-project
, en la zonaus-east1-b
, a partir de una imagen de máquina llamadamy-machine-image
.La marca
--service-account
especifica la cuenta de servicio que deseas conectar a la VM recién creada. Si no proporcionas esta marca, la cuenta de servicio de origen no se puede compartir en ambos proyectos y la operación falla.gcloud compute instances create my-instance \ --project=vm-project \ --zone=us-east1-b \ --source-machine-image=projects/machine-image-project/global/machineImages/my-machine-image \ --service-account=000123456789-compute@developer.gserviceaccount.com
Una vez que se crea la VM, el resultado será similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
- Obtén más información sobre las imágenes de máquina.
- Obtén más información sobre cómo crear instancias de VM
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.
Restricciones
Las siguientes restricciones se aplican cuando creas VMs a partir de imágenes de máquina:
Crea una VM a partir de una imagen de máquina (sin anulación)
Si deseas crear una VM basada por completo en la imagen de máquina sin cambios en las propiedades, usa este método.
Console
gcloud
Usa el comando
gcloud compute instances create
para crear una instancia a partir de una imagen de máquina.gcloud compute instances create VM_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
Reemplaza lo siguiente:
Ejemplo
Por ejemplo, puedes usar el siguiente comando de
gcloud
para crear una VM llamadamy-instance
en la zonaus-east1-b
, a partir de una imagen de máquina llamadamy-machine-image
.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
Una vez que se crea la VM, el resultado será similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
REST
En la API, realiza una solicitud
POST
para el métodoinstances.insert
. En el cuerpo de la solicitud, incluye los siguientes parámetros:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Reemplaza lo siguiente:
Crea una VM a partir de una imagen de máquina con anulaciones de propiedad
Si deseas crear una VM basada en la imagen de la máquina, pero con algunos cambios, puedes usar el comportamiento de anulación. A fin de usar el comportamiento de anulación, debes pasar los atributos para anular las propiedades existentes de la imagen de máquina cuando creas la instancia.
Cuando uses la función de anulación, ten en cuenta los siguientes factores:
Console
gcloud
Usa el comando
gcloud compute instances create
para crear una instancia a partir de una imagen de máquina y agrega las propiedades que deseas anular.Por ejemplo, puedes usar el siguiente comando de
gcloud
para crear una VM llamadamy-instance
en la zonaus-east1-b
, a partir de una imagen de máquina llamadamy-machine-image
. En este ejemplo, las anulaciones se aplican para cambiar el tipo de máquina, detener la política de mantenimiento de host y configurar un disco persistente regional con el nombreregional-disk-0
.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image \ --machine-type=e2-standard-2 \ --maintenance-policy=TERMINATE \ --create-disk=device-name=boot-device-0,boot=true,auto-delete=true \ --create-disk=device-name=regional-disk-0,\ replica-zones=^:^us-east1-b:us-east1-c,boot=false
REST
Para anular las propiedades de la imagen de máquina durante la creación de la VM, usa la API de
instances.insert()
y proporciona los campos que deseas anular en el cuerpo de la solicitud.En la API, realiza una solicitud
POST
para el métodoinstances.insert
. En el cuerpo de la solicitud, incluye el parámetrosourceMachineImage
y cualquier anulación que necesites. Puedes agregar cualquier propiedad que normalmente configurarías durante la creación de la instancia. Por ejemplo, para cambiar el tipo de máquina, la llamada a la API debe incluir el parámetromachineType
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Reemplaza lo siguiente:
Comportamiento de anulación
El comportamiento de anulación en la API sigue las reglas de parche de combinación JSON, como se describe en RFC 7396. En resumen, se aplican las siguientes reglas:
Por ejemplo, si deseas crear una VM a partir de una imagen de máquina y crear discos persistentes regionales con la VM, usa una anulación para los discos a fin de que puedas especificar la opción
replicaZones
. Debido a que el campodisks
es uno repetido, debes especificar la configuración del disco para todos los discos conectados y el disco de arranque, no solo los discos regionales.POST /compute/projects/my-proj/zones/us-west1-a/instances { "name": "vm-from-image", "sourceMachineImage": "global/machineImages/my-machine-image", "disks": [ { "kind": "compute#attachedDisks", "boot": true, "autoDelete": true, "deviceName": "boot-device", "initializeParams": { "sourceImage": "projects/my-proj/global/images/my-image", "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", } }, { "kind": "compute#attachedDisk", "boot": false, "autoDelete": true, "deviceName": "regional-device-0", "initializeParams": { "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", "replicaZones": [ "projects/my-proj/zones/us-west1-a", "projects/my-proj/zones/us-west1-c" ] } } ] }
Crea una VM mediante una imagen de máquina de un proyecto diferente
Cuando creas una VM a partir de una imagen de máquina de otro proyecto, es posible que no tengas acceso a la cuenta de servicio vinculada con ese proyecto de origen. Si deseas crear una VM a partir de una imagen de máquina ubicada en otro proyecto, debes asegurarte de tener acceso a la imagen de máquina y anular la propiedad de la cuenta de servicio en la VM nueva.
Si compartes una imagen de máquina en proyectos que usan una red de VPC compartida, debes especificar de forma explícita los detalles de la VPC compartida cuando crees una VM a partir de la imagen de máquina. Por ejemplo, cuando creas una VM en un proyecto que no es host, proporciona los detalles de la VPC compartida del proyecto host mediante las opciones
--network
,--subnet
o--network-interface
.En las siguientes secciones, se describe cómo crear una VM a partir de una imagen de máquina ubicada en un proyecto diferente mediante Google Cloud CLI.
Próximos pasos
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-12-22 (UTC)
-