Si quieres crear un gran número de instancias de máquinas virtuales (VM) idénticas e independientes entre sí, puedes hacerlo de forma masiva mediante la CLI de Google Cloud o la API de Compute Engine. Puedes crear estas VMs en todas las zonas de una región o distribuirlas en determinadas zonas.
Para obtener más información y las limitaciones asociadas, consulta Información sobre la creación de VMs en bloque. Si quieres crear instancias con GPUs vinculadas, consulta el artículo Crear VMs con GPU en bloque.
Antes de empezar
- En el caso de las VMs y los recursos relacionados que quieras crear, asegúrate de que tienes suficiente cuota y los permisos necesarios.
- 
  
  Si aún no lo has hecho, configura la autenticación.
  La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos 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: gcloud- 
 
 
  
  
   
   
  
   
   
  
   
   
     
   
  
  
   
   
  
   
   
  
   
   
  
 
 
   
   
      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando: gcloud initSi utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada. 
- Set a default region and zone.
 RESTPara usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando: gcloud initSi utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada. Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud . Roles obligatoriosPara obtener los permisos que necesitas para crear VMs en bloque, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de instancias de Compute (v. 1) ( roles/compute.instanceAdmin.v1) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.Este rol predefinido contiene los permisos necesarios para crear máquinas virtuales en bloque. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios: Permisos obligatoriosPara crear VMs en bloque, se necesitan los siguientes permisos: - 
                  compute.instances.createdel proyecto
- 
                Para usar una imagen personalizada para crear la VM, sigue estos pasos:
                  compute.images.useReadOnlyen la imagen
- 
                Para usar una captura para crear la VM, sigue estos pasos:
                  compute.snapshots.useReadOnlyen la captura
- 
                Para usar una plantilla de instancia para crear la VM, haz lo siguiente:
                  compute.instanceTemplates.useReadOnlyen la plantilla de instancia
- 
                Para especificar una subred para tu VM, haz lo siguiente:
                  compute.subnetworks.useen el proyecto o en la subred elegida
- 
                Para especificar una dirección IP estática para la máquina virtual, haz lo siguiente:
                  compute.addresses.useen el proyecto
- 
                Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, sigue estos pasos:
                  compute.subnetworks.useExternalIpen el proyecto o en la subred elegida
- 
                Para asignar una red antigua a la VM, sigue estos pasos:
                  compute.networks.useen el proyecto
- 
                Para asignar una dirección IP externa a la VM cuando se usa una red antigua, haz lo siguiente:
                  compute.networks.useExternalIpen el proyecto
- 
                Para definir los metadatos de la instancia de VM:
                  compute.instances.setMetadataen el proyecto
- 
                Para definir etiquetas en la VM, haz lo siguiente:
                  compute.instances.setTagsen la VM
- 
                Para definir etiquetas en la VM, sigue estos pasos:
                  compute.instances.setLabelsen la VM
- 
                Para definir una cuenta de servicio que pueda usar la VM, sigue estos pasos:
                  compute.instances.setServiceAccounten la VM
- 
                Para crear un disco para la VM, sigue estos pasos:
                  compute.disks.createen el proyecto
- 
                Para adjuntar un disco en modo de solo lectura o de lectura y escritura, sigue estos pasos:
                  compute.disks.useen el disco
- 
                Para adjuntar un disco en modo de solo lectura:
                  compute.disks.useReadOnlyen el disco
 También puedes obtener estos permisos con roles personalizados u otros roles predefinidos. Crear VMs en bloque en una regiónPara crear máquinas virtuales en bloque en una región, usa la CLI de gcloud o la API de Compute Engine. Si especificas un tipo de máquina o la compatibilidad con hardware adicional, como una GPU o un SSD local, Compute Engine colocará las VMs en una zona de la región que admita el tipo de máquina y el hardware adicional. gcloudPara crear VMs de forma masiva en una región, usa el siguiente gcloud compute instances bulk createcomando:gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --region=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT \ ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]Haz los cambios siguientes: - NAME_PATTERN: el patrón de nombre de las VMs. Usa una secuencia de caracteres de almohadilla ( - #) para que Compute Engine la sustituya por una secuencia de números. Por ejemplo, si usas- vm-#como patrón de nombre, se generarán VMs con nombres como- vm-1y- vm-2, hasta el número de VMs especificado por- --count, que debe ser igual o inferior al número de VMs que permite el patrón de nombre.- Cuando se usa un patrón de nombre, Compute Engine intenta evitar conflictos de nombres comprobando los nombres de las VMs creadas a partir de solicitudes anteriores. 
- PREDEFINED_NAMES: una lista de nombres predefinidos para las VMs que se van a crear. Si usas esta marca y especificas - COUNT,- COUNTdebe ser igual al número de nombres proporcionados.
- REGION: la región en la que se crearán las VMs. 
- COUNT: número de VMs que se van a crear. Este valor debe ser menor o igual que el número de máquinas virtuales permitidas por - NAME_PATTERN. Si usa- --predefined-names, no tiene que especificar- COUNT, pero si lo hace, debe ser igual al número de nombres proporcionados.
- MIN_COUNT: número mínimo de máquinas virtuales que se van a crear. En la siguiente tabla se describe el comportamiento de la solicitud en función de cómo definas esta marca: - Valor - Descripción - Sin establecer - El valor predeterminado es - COUNT. Si Compute Engine no puede crear el número de VMs especificado por- COUNT, la solicitud falla y no se crea ninguna VM.- 1- Compute Engine crea tantas máquinas virtuales como sea posible, hasta un máximo de - COUNT.- Mayor que - 1y menor que- COUNT- Compute Engine crea al menos - MIN_COUNTVMs y un máximo de- COUNTVMs. Si no se pueden crear- MIN_COUNTVMs, la solicitud falla y no se crea ninguna VM.
- LOCATION_POLICY: las zonas que se van a incluir o excluir de una región. Use una lista de pares clave-valor, con la zona como clave y la política como valor. Los valores válidos de la política son - allow(el valor predeterminado) y- deny. A continuación, se muestra un valor de ejemplo de esta marca:- --location-policy=us-east1-b=allow,us-east1-c=deny 
- TARGET_DISTRIBUTION_SHAPE: la distribución de las VMs en las zonas especificadas. Usa la marca - --location-policypara especificar las zonas. En la siguiente tabla se muestran los valores válidos de esta marca:- Valor - Descripción - ANY_SINGLE_ZONE- Fuerza la colocación de las VMs en una sola zona y prioriza la utilización de las reservas no utilizadas. Úsalo para evitar el tráfico saliente de la red entre zonas o para reducir la latencia de la red. Este es el valor predeterminado. - BALANCED- Intenta distribuir las VMs de forma uniforme entre todas las zonas de la región. - ANY- Permite distribuir las máquinas virtuales en varias zonas de una región. Elige las zonas que tienen recursos disponibles y que maximizan las reservas zonales sin usar. 
 RESTPara crear VMs en bloque en una región, usa el siguiente instances.bulkInsertmétodo:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }Haz los cambios siguientes: - PROJECT_ID: el ID del proyecto. 
- REGION: la región en la que se crearán las VMs. 
- NAME_PATTERN: el patrón de nombre de las VMs. Especifica esto o - perInstanceProperties. Usa una secuencia de caracteres de almohadilla (- #) para que Compute Engine la sustituya por una secuencia de números. Por ejemplo, si usas- vm-#como patrón de nombre, se generarán VMs con nombres como- vm-1y- vm-2, hasta el número de VMs especificado por- --count, que debe ser igual o inferior al número de VMs que permite el patrón de nombre.- Cuando se usa un patrón de nombre, Compute Engine intenta evitar conflictos de nombres comprobando los nombres de las VMs creadas a partir de solicitudes anteriores. 
- PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: lista de nombres predefinidos de las VMs que se van a crear. Especifica esta opción o - namePattern. Si se usa esta marca y se especifica- COUNT,- COUNTdebe ser igual al número de nombres proporcionados.
- COUNT: número de VMs que se van a crear. Este valor debe ser menor o igual que el número de máquinas virtuales permitidas por - NAME_PATTERN. Si usa- perInstanceProperties, no tiene que especificar- COUNT, pero, si lo hace, debe ser igual al número de nombres proporcionados.
- MIN_COUNT: número mínimo de máquinas virtuales que se van a crear. En la siguiente tabla se describe el comportamiento de la solicitud en función de cómo definas esta marca: - Valor - Descripción - Sin establecer - El valor predeterminado es - COUNT. Si Compute Engine no puede crear el número de VMs especificado por- COUNT, la solicitud falla y no se crea ninguna VM.- 1- Compute Engine crea tantas máquinas virtuales como sea posible, hasta un máximo de - COUNT.- Mayor que - 1y menor que- COUNT- Compute Engine crea al menos - MIN_COUNTVMs y un máximo de- COUNTVMs. Si no se pueden crear- MIN_COUNTVMs, la solicitud falla y no se crea ninguna VM.
- LOCATION_POLICY: las zonas que se van a incluir o excluir de una región. Use una lista de pares clave-valor, con la zona como clave y la política como valor. Los valores válidos de la política son - ALLOW(el valor predeterminado) y- DENY. A continuación, se muestra un valor de ejemplo de este campo:- "locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
- TARGET_DISTRIBUTION_SHAPE: la distribución de las VMs en las zonas especificadas. Usa el campo - locationPolicypara especificar las zonas. En la siguiente tabla se muestran los valores válidos de este campo:- Valor - Descripción - ANY_SINGLE_ZONE- Fuerza la colocación de las VMs en una sola zona y prioriza la utilización de las reservas no utilizadas. Úsalo para evitar el tráfico saliente de la red entre zonas o para reducir la latencia de la red. Este es el valor predeterminado. - BALANCED- Intenta distribuir las VMs de forma uniforme entre todas las zonas de la región. - ANY- Permite distribuir las máquinas virtuales en varias zonas de una región. Elige las zonas que tienen recursos disponibles y que maximizan las reservas zonales sin usar. 
 Crear máquinas virtuales en bloque en una zonaPara crear máquinas virtuales en bloque en una zona, usa la CLI de gcloud o la API de Compute Engine. gcloudPara crear VMs de forma masiva en una zona específica, usa el siguiente gcloud compute instances bulk createcomando.gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]Haz los cambios siguientes: - NAME_PATTERN: el patrón de nombre de las VMs. Usa una secuencia de caracteres de almohadilla ( - #) para que Compute Engine la sustituya por una secuencia de números. Por ejemplo, si usas- vm-#como patrón de nombre, se generarán VMs con nombres como- vm-1y- vm-2, hasta el número de VMs especificado por- --count, que debe ser igual o inferior al número de VMs que permite el patrón de nombre.- Cuando se usa un patrón de nombre, Compute Engine intenta evitar conflictos de nombres comprobando los nombres de las VMs creadas a partir de solicitudes anteriores. 
- PREDEFINED_NAMES: una lista de nombres predefinidos para las VMs que se van a crear. Si usas esta marca y especificas - COUNT,- COUNTdebe ser igual al número de nombres proporcionados.
- ZONE: la zona en la que se crearán las VMs. 
- COUNT: número de VMs que se van a crear. Este valor debe ser menor o igual que el número de máquinas virtuales permitidas por - NAME_PATTERN. Si usa- --predefined-names, no tiene que especificar- COUNT, pero si lo hace, debe ser igual al número de nombres proporcionados.
- MIN_COUNT: número mínimo de máquinas virtuales que se van a crear. En la siguiente tabla se describe el comportamiento de la solicitud en función de cómo definas esta marca: - Valor - Descripción - Sin establecer - El valor predeterminado es - COUNT. Si Compute Engine no puede crear el número de VMs especificado por- COUNT, la solicitud falla y no se crea ninguna VM.- 1- Compute Engine crea tantas máquinas virtuales como sea posible, hasta un máximo de - COUNT.- Mayor que - 1y menor que- COUNT- Compute Engine crea al menos - MIN_COUNTVMs y un máximo de- COUNTVMs. Si no se pueden crear- MIN_COUNTVMs, la solicitud falla y no se crea ninguna VM.
 RESTPara crear VMs en bloque en una zona, usa el siguiente instances.bulkInsertmétodo.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, ... }Haz los cambios siguientes: - PROJECT_ID: el ID del proyecto. 
- ZONE: la zona en la que se crearán las VMs. 
- NAME_PATTERN: el patrón de nombre de las VMs. Especifica esto o - perInstanceProperties. Usa una secuencia de caracteres de almohadilla (- #) para que Compute Engine la sustituya por una secuencia de números. Por ejemplo, si usas- vm-#como patrón de nombre, se generarán VMs con nombres como- vm-1y- vm-2, hasta el número de VMs especificado por- --count, que debe ser igual o inferior al número de VMs que permite el patrón de nombre.- Cuando se usa un patrón de nombre, Compute Engine intenta evitar conflictos de nombres comprobando los nombres de las VMs creadas a partir de solicitudes anteriores. 
- PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: lista de nombres predefinidos de las VMs que se van a crear. Especifica esta opción o - namePattern. Si se usa esta marca y se especifica- COUNT,- COUNTdebe ser igual al número de nombres proporcionados.
- COUNT: número de VMs que se van a crear. Este valor debe ser menor o igual que el número de máquinas virtuales permitidas por - NAME_PATTERN. Si usa- perInstanceProperties, no tiene que especificar- COUNT, pero, si lo hace, debe ser igual al número de nombres proporcionados.
- MIN_COUNT: número mínimo de máquinas virtuales que se van a crear. En la siguiente tabla se describe el comportamiento de la solicitud en función de cómo definas esta marca: - Valor - Descripción - Sin establecer - El valor predeterminado es - COUNT. Si Compute Engine no puede crear el número de VMs especificado por- COUNT, la solicitud falla y no se crea ninguna VM.- 1- Compute Engine crea tantas máquinas virtuales como sea posible, hasta un máximo de - COUNT.- Mayor que - 1y menor que- COUNT- Compute Engine crea al menos - MIN_COUNTVMs y un máximo de- COUNTVMs. Si no se pueden crear- MIN_COUNTVMs, la solicitud falla y no se crea ninguna VM.
 Crear VMs con nombres de host personalizados en bloquePuedes crear máquinas virtuales con nombres de host personalizados en bloque en una región o en una zona mediante la CLI de gcloud o la API de Compute Engine. Debes configurar manualmente el registro DNS de tu nombre de host personalizado. Para obtener más información, consulta las limitaciones. Si no especificas un nombre de host, Compute Engine asignará a las VMs uno de los siguientes: - VM_NAME.c.PROJECT_ID.internalcuando habilitas el DNS global
- VM_NAME.ZONE.c.PROJECT_ID.internalcuando habilitas el DNS zonal
 Para obtener más información, consulta Nombres de DNS internos. gcloudPara crear VMs de forma masiva con nombres de host personalizados en una región específica, usa el siguiente gcloud beta compute instances bulk createcomando.gcloud beta compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --per-instance-hostnames=[VM_NAME=HOSTNAME,...] \ --zone=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]Haz los cambios siguientes: - NAME_PATTERN: el patrón de nombre de las VMs. Usa una secuencia de caracteres de almohadilla ( - #) para que Compute Engine la sustituya por una secuencia de números. Por ejemplo, si usas- vm-#como patrón de nombre, se generarán VMs con nombres como- vm-1y- vm-2, hasta el número de VMs especificado por- --count, que debe ser igual o inferior al número de VMs que permite el patrón de nombre.- Cuando se usa un patrón de nombre, Compute Engine intenta evitar conflictos de nombres comprobando los nombres de las VMs creadas a partir de solicitudes anteriores. 
- PREDEFINED_NAMES: una lista de nombres predefinidos para las VMs que se van a crear. Si usas esta marca y especificas - COUNT,- COUNTdebe ser igual al número de nombres proporcionados.
- [VM_NAME=HOSTNAME, ...]: una lista de pares clave-valor de nombres predefinidos para las VMs y nombres de host de dominio completos que quieras asignar a las VMs. Los nombres de host personalizados deben cumplir los requisitos de la RFC 1035 para que sean válidos. 
- REGION: la zona en la que se crearán las VMs. 
- COUNT: número de VMs que se van a crear. Este valor debe ser menor o igual que el número de máquinas virtuales permitidas por - NAME_PATTERN. Si usa- --predefined-names, no tiene que especificar- COUNT, pero si lo hace, debe ser igual al número de nombres proporcionados.
- MIN_COUNT: número mínimo de máquinas virtuales que se van a crear. En la siguiente tabla se describe el comportamiento de la solicitud en función de cómo definas esta marca: - Valor - Descripción - Sin establecer - El valor predeterminado es - COUNT. Si Compute Engine no puede crear el número de VMs especificado por- COUNT, la solicitud falla y no se crea ninguna VM.- 1- Compute Engine crea tantas máquinas virtuales como sea posible, hasta un máximo de - COUNT.- Mayor que - 1y menor que- COUNT- Compute Engine crea al menos - MIN_COUNTVMs y un máximo de- COUNTVMs. Si no se pueden crear- MIN_COUNTVMs, la solicitud falla y no se crea ninguna VM.
- LOCATION_POLICY: las zonas que se van a incluir o excluir de una región. Use una lista de pares clave-valor, con la zona como clave y la política como valor. Los valores válidos de la política son - ALLOW(el valor predeterminado) y- DENY. A continuación, se muestra un valor de ejemplo de este campo:- "locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
- TARGET_DISTRIBUTION_SHAPE: la distribución de las VMs en las zonas especificadas. Usa el campo - locationPolicypara especificar las zonas. En la siguiente tabla se muestran los valores válidos de este campo:- Valor - Descripción - ANY_SINGLE_ZONE- Fuerza la colocación de las VMs en una sola zona y prioriza la utilización de las reservas no utilizadas. Úsalo para evitar el tráfico saliente de la red entre zonas o para reducir la latencia de la red. Este es el valor predeterminado. - BALANCED- Intenta distribuir las VMs de forma uniforme entre todas las zonas de la región. - ANY- Permite distribuir las máquinas virtuales en varias zonas de una región. Elige las zonas que tienen recursos disponibles y que maximizan las reservas zonales sin usar. 
 RESTPara crear VMs con nombres de host personalizados de forma masiva en una región específica, usa el siguiente instances.bulkInsertmétodo:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {"hostname": HOSTNAME_1}, "PREDEFINED_NAME_2": {"hostname": HOSTNAME_2}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }Haz los cambios siguientes: - PROJECT_ID: el ID del proyecto. 
- REGION: la región en la que se crearán las VMs. 
- NAME_PATTERN: el patrón de nombre de las VMs. Especifica esto o - perInstanceProperties. Usa una secuencia de caracteres de almohadilla (- #) para que Compute Engine la sustituya por una secuencia de números. Por ejemplo, si usas- vm-#como patrón de nombre, se generarán VMs con nombres como- vm-1y- vm-2, hasta el número de VMs especificado por- --count, que debe ser igual o inferior al número de VMs que permite el patrón de nombre.- Cuando se usa un patrón de nombre, Compute Engine intenta evitar conflictos de nombres comprobando los nombres de las VMs creadas a partir de solicitudes anteriores. 
- PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: lista de nombres predefinidos de las VMs que se van a crear. Especifica esta opción o - namePattern. Si se usa esta marca y se especifica- COUNT,- COUNTdebe ser igual al número de nombres proporcionados.
- HOSTNAME_1, HOSTNAME_2, ...: nombres de host de dominio completos que quieras asignar a las VMs. Los nombres de host personalizados deben cumplir los requisitos de la RFC 1035 para que sean válidos. - Por ejemplo, para crear dos VMs, - vm-1y- vm-2, con los nombres de host personalizados- my-host1234.example.comy- test.example.com, respectivamente, especifica la propiedad- hostnameen- perInstancePropertiesde la siguiente manera:- { ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ...} },
- COUNT: número de VMs que se van a crear. Este valor debe ser menor o igual que el número de máquinas virtuales permitidas por - NAME_PATTERN. Si usa- perInstanceProperties, no tiene que especificar- COUNT, pero, si lo hace, debe ser igual al número de nombres proporcionados.
- MIN_COUNT: número mínimo de máquinas virtuales que se van a crear. En la siguiente tabla se describe el comportamiento de la solicitud en función de cómo definas esta marca: - Valor - Descripción - Sin establecer - El valor predeterminado es - COUNT. Si Compute Engine no puede crear el número de VMs especificado por- COUNT, la solicitud falla y no se crea ninguna VM.- 1- Compute Engine crea tantas máquinas virtuales como sea posible, hasta un máximo de - COUNT.- Mayor que - 1y menor que- COUNT- Compute Engine crea al menos - MIN_COUNTVMs y un máximo de- COUNTVMs. Si no se pueden crear- MIN_COUNTVMs, la solicitud falla y no se crea ninguna VM.
- LOCATION_POLICY: las zonas que se van a incluir o excluir de una región. Use una lista de pares clave-valor, con la zona como clave y la política como valor. Los valores válidos de la política son - ALLOW(el valor predeterminado) y- DENY. A continuación, se muestra un valor de ejemplo de este campo:- "locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
- TARGET_DISTRIBUTION_SHAPE: la distribución de las VMs en las zonas especificadas. Usa el campo - locationPolicypara especificar las zonas. En la siguiente tabla se muestran los valores válidos de este campo:- Valor - Descripción - ANY_SINGLE_ZONE- Fuerza la colocación de las VMs en una sola zona y prioriza la utilización de las reservas no utilizadas. Úsalo para evitar el tráfico saliente de la red entre zonas o para reducir la latencia de la red. Este es el valor predeterminado. - BALANCED- Intenta distribuir las VMs de forma uniforme entre todas las zonas de la región. - ANY- Permite distribuir las máquinas virtuales en varias zonas de una región. Elige las zonas que tienen recursos disponibles y que maximizan las reservas zonales sin usar. 
 Consultar el estado de una solicitud para crear VMs en bloqueCuando creas una solicitud de mutación, Compute Engine devuelve un recurso operationque puedes sondear para obtener el estado de la operación. Para obtener más información, consulta Gestionar respuestas de la API.Para obtener el estado de una solicitud de inserción masiva, envía una solicitud HTTP GETal recursooperation:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID Para obtener el estado de una solicitud de inserción en bloque regional, envía la siguiente solicitud: GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID Haz los cambios siguientes: - PROJECT_ID: el ID del proyecto en el que vas a crear las VMs
- REGION: la región en la que vas a crear las VMs
- ZONE: la zona en la que vas a crear las VMs.
- OPERATION_ID: ID de la operación de inserción en bloque
 El objeto instancesBulkInsertOperationMetadatade la respuesta contiene detalles sobre la operación por zona en el campoperLocationStatus. Para cada zona incluida en la solicitud de creación en bloque,perLocationStatuscontiene los siguientes campos:- status: El estado puede ser uno de los siguientes:- CREATING: la creación de la VM está en curso en la zona.
- ROLLING_BACK: La solicitud ha fallado en la zona y se está revirtiendo.
- DONE: la creación o la restauración de la VM se ha completado correctamente en la zona.
 
- targetVmCount: número de VMs que Compute Engine intenta crear en la zona. Compute Engine determina este recuento después de las comprobaciones iniciales y no cambia durante la operación. Cuando compruebas el estado de la operación, este campo siempre está presente en cada zona.
- createdVmCount: número de VMs que ya se han creado en la zona. Este valor no supera- targetVmCounten una zona determinada.- failedToCreateVmCount: número de máquinas virtuales que no se han podido crear en la zona.
- deletedVmCount: número de máquinas virtuales que se han eliminado de la zona como parte de la reversión de una operación fallida.
 
 El campo progressde la respuesta representa el porcentaje de finalización de la operación.El estado de la operación de inserción masiva es RUNNINGhasta que Compute Engine crea correctamente al menos el número mínimo de VMs y no se creen más VMs ni se revierta la solicitud.Cuando la operación de inserción en bloque esté en curso, debería ver una respuesta similar a la siguiente: { "kind" : "compute#operation", "id": "4653028658507445766", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationType": "bulkInsert", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project" "targetId": 4653028658507445766, "status": "RUNNING", "progress": 2, "user": "example@google.com", "insertTime": "2023-04-23T09:57:13.474-07:00", "startTime": "2023-04-23T09:57:13.474-07:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "metadata": "instances_bulk_insert_operation_metadata": { "per_location_status": { "zones/us-central1-a": { "status": "CREATING", "targetVmCount": 50, "createdVmCount": 1 } } } }En este ejemplo, se ha creado una instancia correctamente y la operación se ha completado al 2 %. La operación devuelve el estado DONEcuando Compute Engine crea correctamente al menos el número mínimo de VMs especificado porminCounto cuando Compute Engine completa la reversión de la solicitud. Una vez que se hayan creado correctamente las VMs solicitadas, recibirás una respuesta similar a la siguiente:{ "endTime": "2023-04-23T09:58:13.474-07:00", "id": "5053101474378293244", "insertTime": "2023-04-23T09:57:13.474-07:00", "instancesBulkInsertOperationMetadata": { "perLocationStatus": { "zones/us-central1-a": { "status": "DONE", "createdVmCount": 50, "targetVmCount": 50 } } }, "kind": "compute#operation", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "operationType": "bulkInsert", "progress": 100, "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "startTime": "2023-09-11T16:21:55.629-07:00", "status": "DONE", "targetId": "625521788110", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project", "user": "example@google.com", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a" }Para obtener más información, consulta la documentación del objeto instancesBulkInsertOperationMetadata.Consultar el estado de una sola máquina virtualPara comprobar el estado de una sola máquina virtual creada a partir de una solicitud para crear máquinas virtuales en bloque, usa la CLI de gcloud o la API Compute Engine. gcloud- En el - Operationdevuelto por la solicitud, obtén el valor de la propiedad- operationGroupId.
- Usa la propiedad - operationGroupIdcomo filtro con el comando- gcloud compute operations listpara buscar en todas las operaciones y zonas del proyecto las VMs asociadas a la solicitud regional o zonal:- gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID) 
- Para obtener el resto de las propiedades de la máquina virtual, haga lo siguiente: - En la lista de operaciones, - targetLinkrepresenta la ruta de la VM. Usa el- gcloud compute instances describecomando con esta ruta como nombre de la VM para obtener sus propiedades:- gcloud compute instances describe VM_NAME 
- Usa el - gcloud compute instances listcomando con un filtro que incluya los nombres de las VMs de la lista de operaciones:- gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2) 
- Usa el comando - gcloud compute instances listpara obtener las propiedades de las VMs de todas las zonas y regiones, y filtra por una etiqueta que sea única para las instancias o por sus nombres:- gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2) 
 
 REST- En el - Operationdevuelto por la solicitud, obtén el valor de la propiedad- operationGroupId.
- Usa la propiedad - operationGroupIdpara obtener la lista de operaciones de VM asociadas a la solicitud regional o por zonas:- Si has enviado una solicitud regional, para buscar en todas las operaciones y zonas del proyecto, usa el método - globalOperations.aggregatedListe incluye la propiedad- operationGroupIdcomo filtro:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID) 
- Si has enviado una solicitud zonal, para enumerar las operaciones de esa zona, usa el método - zoneOperations.gete incluye la propiedad- operationGroupIden el cuerpo de la solicitud:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
 
- Para obtener el resto de las propiedades de la máquina virtual, haga lo siguiente: - En la lista de operaciones, - targetLinkrepresenta la ruta de la máquina virtual. Usa el método- instances.getcon esta ruta como nombre de la VM para obtener todas las propiedades de la VM:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME 
- Usa el - instances.getmétodo con un filtro que incluya los nombres de las VMs de la lista de operaciones:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2) 
- Usa el - instances.aggregatedListmétodo para obtener las propiedades de las VMs de todas las zonas y regiones, y filtrar por una etiqueta que sea única para las instancias o por sus nombres:- GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2) 
 
 Ejemplos de pseudocódigoEn los siguientes ejemplos de pseudocódigo se muestra cómo personalizar las solicitudes para crear VMs en bloque. Crear VMs en bloque en una región a partir de un conjunto de regionesEn el siguiente pseudocódigo se describe cómo crear 1000 VMs en una región a partir de un conjunto de regiones. Cuando se intenta crear VMs en bloque en una región a partir de un conjunto de regiones, la solicitud primero comprueba la capacidad. Si no hay suficiente capacidad, la solicitud falla inmediatamente y se vuelve a intentar con la siguiente región del conjunto. - Especifica el número de VMs que se crearán en una zona. - nTarget = 1000
- Designa las regiones en las que se intentará crear las VMs. - acceptableRegions = ["us-central1", "us-east1", "us-west1"]
- Itera por las regiones e intenta crear las VMs en cada región hasta que se complete la operación. - for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
 Crear máquinas virtuales en bloque en una zonaen un tipo de máquina En el siguiente pseudocódigo se describe cómo crear varias VMs en una zona con un tipo de máquina específico. Cuando se intenta crear máquinas virtuales en bloque con el mismo tipo de máquina, la solicitud primero comprueba la disponibilidad de esos tipos de máquina. Si no hay suficiente cantidad del tipo de máquina disponible, la solicitud falla inmediatamente y se vuelve a intentar con el siguiente tipo de máquina. - Especifica el número de VMs que quieres crear y la región en la que quieres crearlas. - nTarget = 1000 region = "us-central1"
- Especifica las familias de máquinas en las que se intentará crear las VMs. - acceptableMachineFamilies = ["n2","c2","e2","n1"]
- Itera por el conjunto de tipos de máquina e intenta crear las VMs en el tipo de máquina hasta que se complete correctamente. - for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
 Crear más de 5000 VMs en una zonaCuando creas VMs en bloque, solo puedes crear 5000 VMs con cada solicitud. El siguiente pseudocódigo describe cómo crear más de 5000 VMs en una zona enviando varias solicitudes. - Especifica el número de VMs que quieres crear, un contador para hacer un seguimiento del número total de VMs creadas, la región en la que quieres crear las VMs y una variable para almacenar la zona en la que Compute Engine crea las VMs. - nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
- Envía una solicitud inicial para crear 5000 VMs, guarda la zona devuelta por la solicitud y actualiza el contador del número de VMs creadas. - call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs created
- Sigue enviando solicitudes para crear hasta 5000 VMs a la vez en la zona hasta que Compute Engine cree el número especificado de VMs. - while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
 Crear VMs en bloque y ver su estadoEn el siguiente procedimiento se muestra cómo crear un grupo de VMs con nombres predefinidos y, a continuación, ver su estado: - Especifica el número de VMs que quieres crear, la zona en la que quieres crearlas y una estructura de datos en la que almacenar los nombres. - nTarget = 1000 targetZone = "us-central-1a" names = []
- Genera los nombres con patrón de las VMs y añádelos a la estructura de datos. - for n in range(0, 1000): names.push("instance-%d".format(n))
- Crea las VMs y usa - perInstancePropertiespara especificar los nombres.- call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
- Obtén los detalles de las VMs mediante el - instances.listmétodo con un filtro para los nombres de las VMs de las que quieras obtener los detalles.- instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
 Siguientes pasosDespués de crear VMs en bloque, haga una o ambas de las siguientes acciones para simplificar la gestión de esas VMs: - Añade las VMs a un grupo de instancias sin gestionar. Añadir VMs a un grupo de instancias no gestionado te permite usar Cloud Monitoring. Los grupos de instancias no gestionados no ofrecen balanceo de carga ni gestión del ciclo de vida de las VMs. 
- Usa etiquetas. Las etiquetas te permiten organizar los recursos mediante pares clave-valor. 
 A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados. Última actualización: 2025-10-19 (UTC). -