Después de crear una imagen de máquina, puede usarla para hacer copias de la instancia informática de origen. Para obtener más información sobre los usos de las imágenes de máquina, consulte cuándo utilizar 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.
La imagen de una máquina no se puede cambiar. Sin embargo, puede anular casi todas las propiedades de la imagen de la máquina al crear una instancia a partir de la imagen de la máquina.
Puede crear instancias a partir de imágenes de máquinas mediante la consola de Google Cloud , la CLI de Google Cloud o REST .
Antes de comenzar
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- 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.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
-
Roles requeridos
Para obtener los permisos que necesita para crear instancias de Compute Engine a partir de imágenes de máquinas, solicite a su administrador que le otorgue la función de IAM de Administrador de instancias de Compute (v1) ( roles/compute.instanceAdmin.v1
) en la instancia de computación o el proyecto. Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .
También es posible que pueda obtener los permisos necesarios a través de roles personalizados u otros roles predefinidos .
Restricciones
Se aplican las siguientes restricciones al crear instancias a partir de imágenes de máquina:
Puede crear como máximo 6 instancias a partir de una imagen de máquina de origen en 60 minutos. Si excede este límite, la operación de creación de instancia falla y devuelve 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 instancias que el límite definido (6 instancias en 60 minutos), cree imágenes de máquina adicionales a partir de la instancia de origen o cree imágenes de máquina de corta duración a partir de las nuevas instancias. Luego puede crear la cantidad requerida de instancias a partir de las nuevas imágenes de la máquina.
No puede crear instancias a partir de imágenes de máquinas con discos regionales adjuntos mediante la consola de Google Cloud. Utilice la CLI o REST de Google Cloud y especifique los parámetros
replicaZones
ydeviceName
para cada disco regional conectado. Para obtener más información, consulte Crear una instancia a partir de una imagen de máquina con anulaciones de propiedades .
Crear una instancia a partir de una imagen de máquina (sin anulación)
Si desea crear una instancia que se base completamente en la imagen de la máquina sin cambios en las propiedades, utilice este método.
Consola
En la consola de Google Cloud, vaya a la página Crear una instancia .
En el menú
Crear VM desde... , seleccione Imágenes de máquina .En la ventana Crear VM desde la imagen de la máquina que aparece, haga lo siguiente:
Seleccione una imagen de máquina.
Para crear e iniciar la instancia, haga clic en Crear .
nube de gcloud
Usa el comando gcloud compute instances create
para crear una instancia a partir de una imagen de máquina.
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
Reemplace lo siguiente:
-
INSTANCE_NAME
: el nombre de la instancia -
ZONE
: la zona de la instancia. -
SOURCE_MACHINE_IMAGE_NAME
: la imagen de la máquina desde la que crear la instancia
Ejemplo
Por ejemplo, puedes usar el siguiente comando de gcloud
para crear una instancia llamada my-instance
en la zona us-east1-b
, a partir de una imagen de máquina llamada my-machine-image
.
gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
Una vez creada la instancia, el resultado es 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
DESCANSAR
En la API, cree una solicitud POST
para el método instances.insert
. En el cuerpo de la solicitud, incluya los siguientes parámetros:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Reemplace lo siguiente:
-
PROJECT_ID
: su ID de proyecto . -
ZONE
: la zona de la instancia. -
INSTANCE_NAME
: un nombre para la instancia. SOURCE_MACHINE_IMAGE_URL
: la URL completa o parcial de la imagen de la máquina que desea utilizar para crear la instancia. Por ejemplo, si tiene una imagen de máquina llamadamy-machine-image
en un proyecto llamadomyProject
. Las siguientes URL 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
-
Cree una instancia a partir de una imagen de máquina con anulaciones de propiedades
Si desea crear una instancia basada principalmente en la imagen de la máquina pero con algunos cambios, puede utilizar el comportamiento de anulación. Para utilizar el comportamiento de anulación, pase atributos para anular las propiedades de imagen de máquina existentes al crear la instancia.
Cuando utilice la función de anulación, tenga en cuenta las siguientes notas:
- No puede anular ninguna propiedad del disco adjunto que no sea el nombre del disco al crear una instancia a partir de la imagen de la máquina.
Debe especificar el parámetro
replicaZones
para cada disco regional conectado junto con el nombre deldeviceName
del disco regional de la imagen de la máquina.Si la instancia de origen (utilizada para generar la imagen de la máquina) y la nueva instancia pertenecen al mismo proyecto y a la misma región, se aplica lo siguiente:
- La mayoría de las propiedades de la instancia fuente y la nueva instancia son las mismas. Las propiedades que difieren son aquellas como las direcciones IP efímeras que se asignan automáticamente.
- Si la instancia de origen todavía existe cuando crea una nueva instancia, entonces la nueva instancia no puede usar el mismo nombre y la misma zona que la instancia de origen.
Si la instancia de origen utilizada para generar la imagen de la máquina y la nueva instancia pertenecen al mismo proyecto pero a regiones diferentes, se aplica lo siguiente:
- Debes anular todos los recursos zonales y regionales para la nueva instancia. Por ejemplo, si crea una instancia a partir de una imagen de máquina cuya instancia de origen pertenecía a una región diferente, deberá anular los recursos regionales, como la subred y las reglas de firewall regionales. Sin embargo, los recursos globales, como los balanceadores de carga y las cuentas de servicio, no necesitan anulación, a menos que desee modificarlos.
Consola
En la consola de Google Cloud, vaya a la página Crear una instancia .
En el menú
Crear VM desde... , seleccione Imágenes de máquina .En la ventana Crear VM desde la imagen de la máquina que aparece, seleccione una plantilla y luego haga clic en
Personalizar .Opcional: especifique otras opciones de configuración. Para obtener más información, consulte Opciones de configuración durante la creación de instancias .
Para crear e iniciar la instancia, haga clic en Crear .
nube de gcloud
Usa el comando gcloud compute instances create
para crear una instancia a partir de una imagen de máquina y agregar las propiedades que deseas anular.
Por ejemplo, puedes usar el siguiente comando de gcloud
para crear una máquina virtual llamada my-instance
en la zona us-east1-b
, a partir de una imagen de máquina llamada my-machine-image
. En este ejemplo, se aplican anulaciones para cambiar el tipo de máquina, detener la política de mantenimiento del host y configurar un disco persistente regional con el nombre regional-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
DESCANSAR
Para anular las propiedades de la imagen de la máquina durante la creación de la instancia, cree una solicitud POST
para el método instances.insert
. En el cuerpo de la solicitud, incluya el parámetro sourceMachineImage
y cualquier anulación que necesite. Puede agregar cualquier propiedad que normalmente establecería durante la creación de la instancia . Por ejemplo, para anular el tipo de máquina, su llamada API incluiría el parámetro machineType
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Reemplace lo siguiente:
-
PROJECT_ID
: el ID del proyecto . -
ZONE
: la zona de la instancia. -
INSTANCE_NAME
: un nombre para la instancia. -
NEW_MACHINE_TYPE
: el tipo de máquina que desea utilizar para la instancia. SOURCE_MACHINE_IMAGE_URL
: la URL completa o parcial de la imagen de la máquina que desea utilizar para crear la instancia. Por ejemplo, si tiene una imagen de máquina llamadamy-machine-image
en un proyecto llamadomyProject
. Las siguientes URL 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
-
Anular comportamiento
El comportamiento de anulación en la API de Compute Engine sigue las reglas del parche de combinación JSON, descritas en RFC 7396 . En resumen, se aplican las siguientes reglas:
- Si anula un campo básico, el campo básico correspondiente en la imagen de la máquina se reemplaza con el valor del campo básico en la solicitud. Los campos básicos incluyen parámetros como
machineType
yname
. - Si anula un campo repetido, todos los valores repetidos para esa propiedad se reemplazan con los valores correspondientes proporcionados en la solicitud. Los campos repetidos generalmente son propiedades de tipo
list
. Por ejemplo,disks
ynetworkInterfaces
son campos repetidos. - Si anula un
nested object
, el objeto en la imagen de la máquina se fusiona con la especificación de objeto correspondiente en la solicitud. Tenga en cuenta que si un objeto anidado está dentro de un campo repetido, el campo se trata según 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 de tipoobject
.
Por ejemplo, si desea crear una máquina virtual a partir de una imagen de máquina y crear discos regionales con la máquina virtual, use una anulación para los discos para poder especificar la opción replicaZones
. Debido a que el campo disks
es un campo repetido, debe especificar la configuración del disco para todos los discos conectados y el disco de arranque, no solo los discos regionales.
POST https://compute.googleapis.com/compute/v1/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" ] } } ] }
Cree una instancia usando una imagen de máquina de un proyecto diferente
Cuando crea una instancia utilizando una imagen de máquina de un proyecto diferente, es posible que no tenga acceso a la cuenta de servicio adjunta a ese proyecto de origen. Si desea crear una instancia a partir de una imagen de máquina ubicada en un proyecto diferente, debe asegurarse de tener acceso a la imagen de la máquina y anular la propiedad de la cuenta de servicio en la nueva instancia.
Si comparte una imagen de máquina entre proyectos que utilizan una red de VPC compartida, debe especificar explícitamente los detalles de VPC compartida cuando crea una instancia a partir de la imagen de máquina. Por ejemplo, cuando crea una instancia en un proyecto que no es un host, proporcione los detalles de la VPC compartida del proyecto host usando las marcas --network
, --subnet
o --network-interface
.
Las siguientes secciones describen cómo crear una instancia a partir de una imagen de máquina ubicada en un proyecto diferente mediante la CLI de Google Cloud.
Otorgue acceso a la imagen de la máquina que está almacenada en un proyecto diferente.
Se pueden otorgar permisos tanto en el proyecto de origen como en la imagen de la máquina. Usa el comando
gcloud compute machine-images add-iam-policy-binding
para otorgar permisos en la imagen de la máquina.gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \ --project=MACHINE_IMAGE_PROJECT \ --member='ACCOUNT_EMAIL' \ --role='roles/compute.admin'
Reemplace 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 la máquina a la que desea agregar el enlace de permiso. ACCOUNT_EMAIL
: la dirección de correo electrónico de laserviceAccount
ouser
que está creando la instancia. Asegúrese de que el correo electrónico esté formateado para incluir el prefijo requerido. El prefijo debe ser uno de los siguientes:-
user:
especifique esto si la dirección de correo electrónico está asociada con una cuenta de usuario. Por ejemplo,user:user@example.com
. -
serviceAccount:
especifique 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 un enlace
compute.admin
a la imagen de la máquina llamadamy-machine-image
a la cuenta de servicio, envíe un correo electrónico123456789000-compute@developer.gserviceaccount.com
, usa el siguiente comandogcloud CLI
: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'
-
Otorgue al usuario que ejecuta el comando
gcloud compute instances create
la función de usuario de cuenta de servicio (roles/iam.serviceAccountUser
) en la cuenta de servicio asociada con la imagen de la máquina.Usa el comando
gcloud compute instances create
para crear una instancia a partir de una imagen de máquina.gcloud compute instances create INSTANCE_NAME \ --project=INSTANCE_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --subnet=SUBNET
Reemplace lo siguiente:
-
INSTANCE_PROJECT_ID
: el ID del proyecto en el que desea crear la instancia. -
INSTANCE_NAME
: un nombre para la instancia -
ZONE
: la zona de la instancia. -
MACHINE_IMAGE_PROJECT
: el ID del proyecto donde se encuentra la imagen de la máquina -
MACHINE_IMAGE_NAME
: la imagen de la máquina desde la que crear la instancia -
SERVICE_ACCOUNT_EMAIL
: la dirección de correo electrónico de la cuenta de servicio que desea adjuntar a su instancia SUBNET
: si la subred y la instancia están en el mismo proyecto, reemplace SUBNET con 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, reemplace
SUBNET
con una cadena en el siguiente formato:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Reemplace lo siguiente:
-
HOST_PROJECT_ID
: el ID del proyecto del host de VPC compartida -
REGION
: la región de la subred -
SUBNET_NAME
: el nombre de la subred
Ejemplo
Por ejemplo, el siguiente comando crea una máquina virtual llamada
my-instance
envm-project
, en la zonaus-east1-b
, a partir de una imagen de máquina llamadamy-machine-image
.El indicador
--service-account
especifica la cuenta de servicio que desea adjuntar a la VM recién creada. Si no proporciona esta marca, la cuenta de servicio de origen no se puede compartir entre 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 creada la VM, el resultado es 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
-
-
¿Qué sigue?
- Más información sobre las imágenes de máquinas
- Más información sobre cómo crear instancias de Compute Engine