A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cloud.google.com/compute/docs/instances/multiple/create-in-bulk below:

Create VMs in bulk | Compute Engine Documentation

Skip to main content Create VMs in bulk

Stay organized with collections Save and categorize content based on your preferences.

Linux Windows

When you want to create a large number of virtual machine (VM) instances that are identical and independent from each other, create VMs in bulk using the Google Cloud CLI or the Compute Engine API. You can create these VMs across all zones in a region or distributed across certain zones.

For more details and associated limitations, see About bulk creation of VMs. If you want to create instances with attached GPUs, see Create GPU VMs in bulk instead.

Before you begin Required roles

To get the permissions that you need to create VMs in bulk, ask your administrator to grant you the Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM role on the project. For more information about granting roles, see Manage access to projects, folders, and organizations.

This predefined role contains the permissions required to create VMs in bulk. To see the exact permissions that are required, expand the Required permissions section:

Required permissions

The following permissions are required to create VMs in bulk:

You might also be able to get these permissions with custom roles or other predefined roles.

Create VMs in bulk in a region

To create VMs in bulk in a region, use the gcloud CLI or the Compute Engine API.

If you specify a machine type or support for additional hardware such as a GPU or a local SSD, Compute Engine places the VMs in a zone within the region that supports the machine type and the additional hardware.

gcloud

To create VMs in bulk in a region, use the following gcloud compute instances bulk create command:

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 ]

Replace the following:

REST

To create VMs in bulk in a region, use the following instances.bulkInsert method:

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

Replace the following:

Create VMs in bulk in a zone

To create VMs in bulk in a zone, use the gcloud CLI or the Compute Engine API.

gcloud

To create VMs in bulk in a specific zone, use the following gcloud compute instances bulk create command.

gcloud compute instances bulk create \
    ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \
    --zone=ZONE \
    --count=COUNT \
    [ --min-count=MIN_COUNT ]

Replace the following:

REST

To create VMs in bulk in a zone, use the following instances.bulkInsert method.

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,
  ...
}

Replace the following:

Create VMs with custom hostnames in bulk

You can create VMs with custom hostnames in bulk in a region or in a zone by using the gcloud CLI or the Compute Engine API.

You must manually configure the DNS record for your custom hostname. For more information, see limitations.

If you don't specify a hostname, Compute Engine sets the hostname for VMs as one of the following:

For more information, see internal DNS names.

gcloud

To create VMs in bulk with custom hostnames in a specific region, use the following gcloud beta compute instances bulk create command.

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 ]

Replace the following:

REST

To create VMs with custom hostnames in bulk in a specific region, use the following instances.bulkInsert method:

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

Replace the following:

Check the status of a request to create VMs in bulk

When you create a mutation request, Compute Engine returns an operation resource that you can poll to get the status of the operation. For more information, see Handling API responses.

To get the status of a bulk insert request, send an HTTP GET request to the operation resource:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID

To get the status of a regional bulk insert request, send the following request:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID

Replace the following:

The instancesBulkInsertOperationMetadata object in the response contains the following details of the operation:

The progress field in the response represents the percentage of completion of the operation.

The status of the bulk insert operation is RUNNING until Compute Engine successfully creates at least the minimum number of VMs and no more VM creation or rollback of the request happens.

When the bulk insert operation is in progress, you should see a response similar to the following:

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

In this example, one instance has been successfully created and the operation is 2% completed.

The operation returns the status DONE when Compute Engine successfully creates at least the minimum number of VMs specified by minCount, or when Compute Engine completes the rollback of the request. After successful creation of the requested number of VMs, you get a response similar to the following:

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

For more information, see the documentation for the instancesBulkInsertOperationMetadata object.

Check the status of a single VM

To check the status of a single VM created from a request to create VMs in bulk, use the gcloud CLI or the Compute Engine API.

gcloud
  1. From the Operation returned by the request, get the value of the operationGroupId property.

  2. Use the operationGroupId property as a filter with the gcloud compute operations list command to search across all operations and all zones in the project for VMs associated with the regional or zonal request:

    gcloud compute operations list \
       --filter=(operationGroupId=OPERATION_GROUP_ID)
    
  3. Get the rest of the VM's properties by doing any of the following:

REST
  1. From the Operation returned by the request, get the value of the operationGroupId property.

  2. Use the operationGroupId property to get the list of VM operations associated with the regional or zonal request:

  3. Get the rest of the VM's properties by doing any of the following:

Pseudocode examples

The following pseudocode examples show how to customize requests for creating VMs in bulk.

Create VMs in bulk in one region from a set of regions

The following pseudocode describes how to create 1,000 VMs in one region from a set of regions. When attempting to create VMs in bulk in one region from a set of regions, the request first checks for capacity. If there is not enough capacity, the request fails immediately and tries again with the next region in the set.

  1. Specify the number of VMs to create within a zone.

    nTarget = 1000
    
  2. Designate the regions to attempt to create the VMs in.

    acceptableRegions = ["us-central1", "us-east1", "us-west1"]
    
  3. Iterate through the regions, and attempt to create the VMs in each region until successful.

    for region in acceptableRegions:
      call bulk API: region=region, location-policy=location-policy, count=nTarget
      if request succeeds and the operation succeeds:
        break
    
Create VMs in bulk in a zone on a machine type

The following pseudocode describes how to create multiple VMs in a zone on a specified machine type. When attempting to create VMs in bulk on the same machine type, the request first checks for availability of those machine types. If there is not enough of the machine type available, the request fails immediately and tries again with the next machine type.

  1. Specify the number of VMs to create and the region to create them in.

    nTarget = 1000
    region = "us-central1"
    
  2. Specify the machine families to attempt to create the VMs on.

    acceptableMachineFamilies = ["n2","c2","e2","n1"]
    
  3. Iterate through the set of machine types and attempt to create the VMs on the machine type until successful.

    for family in acceptableMachineFamilies:
      call bulk APIs: region=region, count=nTarget, machineFamily=family
      if request succeeds and the operation succeeds:
        break
    
Create more than 5,000 VMs in a zone

When creating VMs in bulk, you can only create 5,000 VMs with each request. The following pseudocode describes how to create more than 5,000 VMs in a zone by issuing multiple requests.

  1. Specify the number of VMs to create, a counter to keep track of the total number of created VMs, the region to create the VMs in, and a variable to store the zone that Compute Engine creates the VMs in.

    nTarget = 10000
    nCreated = 0
    region = "us-central1"
    targetZone = ""
    
  2. Issue an initial request to create 5,000 VMs, save the zone returned by the request, and update the counter of the number of VMs created.

    call bulk API: region=region, count=5000
    targetZone = zone chosen by bulk API
    nCreated += # of VMs created
    
  3. Continue issuing requests to create up to 5,000 VMs at a time in the zone until Compute Engine creates the specified number of VMs.

    while(nTarget - nCreated > 0):
      call bulk API: zone=targetZone, count=5000
      nCreated += # of VMs created
    
Create VMs in bulk and view their status

The following procedure shows you how to create a group of VMs that have predefined names and then view their status:

  1. Specify the number of VMs to create, the zone to create them in, and a data structure to store the names in.

    nTarget = 1000
    targetZone = "us-central-1a"
    names = []
    
  2. Generate the patterned names for the VMs and add the names to the data structure.

    for n in range(0, 1000):
      names.push("instance-%d".format(n))
    
  3. Create the VMs, and use perInstanceProperties to specify the names.

    call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
    
  4. Get the details of the VMs by using the instances.list method with a filter for the names of VMs to return the details about.

    instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
    
What's next

After creating VMs in bulk, do either or both of the following to simplify management of those VMs:

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-08-07 UTC.

[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["Bulk creation of VMs allows for the deployment of multiple identical and independent virtual machine instances simultaneously, either across specified zones in a region or within a single zone."],["Utilizing the Google Cloud CLI or Compute Engine API, users can define a name pattern or a list of predefined names, a target region or zone, and the total count or minimum count of VMs to be created in bulk."],["Bulk VM creation requests can be customized by specifying zone inclusion or exclusion policies, target distribution shapes for VM placement across zones, machine types, or custom hostnames."],["The progress and status of bulk VM creation requests can be tracked through an operation resource, which provides details on the creation status, the number of VMs created, failed, and deleted, as well as the overall percentage of completion."],["After bulk creation, managing the VMs can be simplified by adding them to an unmanaged instance group for monitoring or using labels to organize the resources."]]],[]]


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4