Crea VMs de forma masiva con flexibilidad de instancias

En este documento, se describe cómo configurar la flexibilidad de instancias cuando creas máquinas virtuales (VMs) de forma masiva. La flexibilidad de instancias te permite especificar varios tipos de máquinas, clasificarlos por preferencia y anular la plataforma de CPU mínima y la configuración de disco para cada selección, de modo que Compute Engine pueda aprovisionar VMs en función de la capacidad y la disponibilidad de cuota en una región.

Para obtener más información sobre la flexibilidad de instancias para las VMs creadas de forma masiva, consulta Acerca de la flexibilidad de instancias para las VMs creadas de forma masiva.

Antes de comenzar

  • En el caso de las VMs y cualquier recurso relacionado que quieras crear, asegúrate de tener suficiente cuota.
  • Si quieres crear VMs Spot de forma masiva, consulta la disponibilidad de los recursos antes de crear las VMs. Verificar la disponibilidad de los recursos ayuda a reducir las probabilidades de que encuentres errores de disponibilidad de recursos cuando crees VMs. Para obtener instrucciones, consulta Cómo ver la disponibilidad de recursos de las VMs Spot.
  • Si aún no lo hiciste, configura la autenticación. La autenticación verifica tu identidad para acceder a los servicios y las APIs de Cloud de Confiance by S3NS . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de esta página:

    gcloud

    1. Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI con el siguiente comando:

      gcloud init
  • Configura una región y una zona predeterminadas.
  • REST

    Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.

      Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada.

    Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Cloud de Confiance .

Roles obligatorios

Para obtener los permisos que necesitas para crear VMs de forma masiva, pídele al administrador que te otorgue el rol de IAM Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear VMs de forma masiva. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear VMs de forma masiva:

  • compute.instances.create en el proyecto
  • Si deseas usar una imagen personalizada para crear la VM, sigue estos pasos: compute.images.useReadOnly en la imagen
  • Para usar una instantánea a fin de crear la VM, haz lo siguiente: compute.snapshots.useReadOnly en la instantánea
  • Si quieres usar una plantilla de instancias para crear la VM, sigue estos pasos: compute.instanceTemplates.useReadOnly en la plantilla de instancias
  • A fin de especificar una subred para tu VM: compute.subnetworks.use en el proyecto o en la subred elegida
  • Si deseas especificar una dirección IP estática para la VM: compute.addresses.use en el proyecto
  • Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida.
  • Para asignar una red heredada a la VM, ejecuta compute.networks.use en el proyecto.
  • Para asignar una dirección IP externa a la VM cuando se usa una red heredada, ejecuta compute.networks.useExternalIp en el proyecto
  • Para configurar los metadatos de la instancia de VM para la VM, compute.instances.setMetadata en el proyecto.
  • Para configurar etiquetas en la VM, haz lo siguiente: compute.instances.setTags en la VM
  • Para configurar etiquetas en la VM, haz lo siguiente: compute.instances.setLabels en la VM
  • A fin de configurar una cuenta de servicio para que la VM use: compute.instances.setServiceAccount en la VM
  • Crear un disco nuevo para la VM: compute.disks.create en el proyecto
  • Para conectar un disco existente en modo de solo lectura o de lectura y escritura, usa compute.disks.use en el disco.
  • Para conectar un disco existente en modo de solo lectura, haz lo siguiente: compute.disks.useReadOnly en el disco

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Crea VMs con varios tipos de máquinas de igual preferencia

Si tu carga de trabajo puede operar en varios tipos de máquinas diferentes, puedes especificar una lista de todos los tipos de máquinas compatibles en una sola selección de instancias. En los siguientes ejemplos, se muestra cómo puedes especificar varios tipos de máquinas con la misma preferencia.

gcloud

Para crear VMs de forma masiva con una sola selección de instancias, usa el comando gcloud compute instances bulk create con la marca --instance-selection-machine-types.

gcloud compute instances bulk create \
    --name-pattern=NAME_PATTERN \
    --region=REGION \
    --count=COUNT \
    --instance-selection-machine-types=MACHINE_TYPE_1,MACHINE_TYPE_2

Reemplaza lo siguiente:

  • COUNT: Es la cantidad de VMs que se crearán.
  • NAME_PATTERN: Es el patrón de nombres para las VMs.
  • MACHINE_TYPE_1, MACHINE_TYPE_2: Son los tipos de máquinas que se usarán para las VMs.
  • REGION: la región en la que se crearán las VMs

Ejemplo

gcloud compute instances bulk create \
    --name-pattern=test-bulk-# \
    --region=us-central1 \
    --count=10 \
    --instance-selection-machine-types=c3-standard-8,n2-standard-8,c2-standard-8

REST

En la API de Compute Engine, realiza una solicitud POST al método regionInstances.bulkInsert. En el cuerpo de la solicitud, incluye instanceFlexibilityPolicy con una entrada instanceSelections que enumere los tipos de máquina.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [{}]
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "selection-1": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2"
        ]
      }
    }
  }
}

Reemplaza lo siguiente:

  • COUNT: Es la cantidad de VMs que se crearán.
  • NAME_PATTERN: Es el patrón de nombres para las VMs.
  • MACHINE_TYPE_1, MACHINE_TYPE_2: Son los tipos de máquinas que se usarán para las VMs.
  • IMAGE_PROJECT: Es el proyecto que contiene la imagen.
  • IMAGE: Es el nombre de la imagen o de la familia de imágenes que se usará.
  • PROJECT_ID: Es el ID del proyecto.
  • REGION: Es la región en la que se crearán las VMs.

Ejemplo

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
  "count": 10,
  "namePattern": "test-bulk-#",
  "instanceProperties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/debian-12"
        }
      }
    ],
    "networkInterfaces": [{}]
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "selection-1": {
        "machineTypes": [
          "c3-standard-8",
          "n2-standard-8",
          "c2-standard-8"
        ]
      }
    }
  }
}

Crea VMs con varios tipos de máquinas clasificadas según la preferencia

Si deseas que Compute Engine elija los tipos de máquinas en un orden específico, puedes configurar varias selecciones de instancias. Cada selección de instancias incluye una lista de tipos de máquinas y una clasificación, que es un número entero que define la preferencia por los tipos de máquinas. Un rango más bajo indica una mayor preferencia. Compute Engine intenta crear VMs con tipos de máquinas que tengan una preferencia más alta (clasificación más baja). Si esos tipos de máquinas no están disponibles, Compute Engine usa tipos de máquinas con una preferencia más baja (clasificación más alta).

En los siguientes ejemplos, se muestra cómo especificar varias selecciones de instancias con clasificaciones.

gcloud

Para crear VMs de forma masiva con varias selecciones de instancias, usa el comando gcloud compute instances bulk create y especifica la marca --instance-selection varias veces.

gcloud compute instances bulk create \
    --name-pattern=NAME_PATTERN \
    --region=REGION \
    --count=COUNT \
    --instance-selection "name=INSTANCE_SELECTION_1,rank=0,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2" \
    --instance-selection "name=INSTANCE_SELECTION_2,rank=1,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4"

Reemplaza lo siguiente:

  • COUNT: Es la cantidad de VMs que se crearán.
  • NAME_PATTERN: Es el patrón de nombres para las VMs.
  • INSTANCE_SELECTION_1: Es el nombre de la primera selección de instancia.
  • INSTANCE_SELECTION_2: Es el nombre de la segunda selección de instancias.
  • MACHINE_TYPE_1, MACHINE_TYPE_2: los tipos de máquina para la primera selección de instancias
  • MACHINE_TYPE_3, MACHINE_TYPE_4: Los tipos de máquina para la segunda selección de instancias
  • REGION: Es la región en la que se crearán las VMs.

Ejemplo

gcloud compute instances bulk create \
    --name-pattern=test-bulk-# \
    --region=us-central1 \
    --count=10 \
    --instance-selection "name=most-preferred,rank=0,machine-type=c3-standard-16,machine-type=n2-standard-16,machine-type=c2-standard-16" \
    --instance-selection "name=least-preferred,rank=1,machine-type=c3-standard-8,machine-type=n2-standard-8,machine-type=c2-standard-8"

REST

En la API de Compute Engine, realiza una solicitud POST al método regionInstances.bulkInsert. En el cuerpo de la solicitud, incluye instanceFlexibilityPolicy y especifica varias entradas en instanceSelections, cada una con una lista de tipos de máquinas y un rank.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [{}]
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2"
        ],
        "rank": 1
      },
      "INSTANCE_SELECTION_2": {
        "machineTypes": [
          "MACHINE_TYPE_3",
          "MACHINE_TYPE_4"
        ],
        "rank": 2
      }
    }
  }
}

Reemplaza lo siguiente:

  • COUNT: la cantidad de VMs que se crearán
  • NAME_PATTERN: Es el patrón de nombres para las VMs.
  • INSTANCE_SELECTION_1: Es el nombre de la primera selección de instancias.
  • INSTANCE_SELECTION_2: Es el nombre de la segunda selección de instancias.
  • MACHINE_TYPE_1, MACHINE_TYPE_2: los tipos de máquina para la primera selección de instancias
  • MACHINE_TYPE_3, MACHINE_TYPE_4: los tipos de máquina para la segunda selección de instancias
  • IMAGE_PROJECT: Es el proyecto que contiene la imagen.
  • IMAGE: Es el nombre de la imagen o de la familia de imágenes que se usará.
  • PROJECT_ID: Es el ID del proyecto.
  • REGION: Es la región en la que se crearán las VMs.

Ejemplo

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
  "count": 10,
  "namePattern": "test-bulk-#",
  "instanceProperties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/debian-12"
        }
      }
    ],
    "networkInterfaces": [{}]
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "most-preferred": {
        "machineTypes": [
          "c3-standard-16",
          "c2-standard-16"
        ],
        "rank": 1
      },
      "least-preferred": {
        "machineTypes": [
          "n2-standard-16",
          "c3-standard-8",
          "n2-standard-8",
          "c2-standard-8"
        ],
        "rank": 2
      }
    }
  }
}

Crea VMs con varios tipos de máquinas, una plataforma de CPU mínima y anulaciones de disco

Además de especificar los tipos y los rangos de máquinas, puedes anular la plataforma de CPU mínima y anular o agregar definiciones de disco en instanceProperties para cada selección de instancia. Por ejemplo, si instanceProperties especifica un Persistent Disk y seleccionas una serie de máquinas N4, debes anular el disco de arranque con un tipo de Google Cloud Hyperdisk compatible.

Para obtener más información sobre los tipos de discos compatibles y cómo Compute Engine aplica las anulaciones, consulta los siguientes recursos:

Para crear VMs de forma masiva con varios tipos de máquinas, una plataforma de CPU mínima y anulaciones de disco, selecciona una de las siguientes opciones:

gcloud

Para crear VMs de forma masiva con varios tipos de máquinas, una plataforma de CPU mínima y anulaciones de disco, usa el comando gcloud compute instances bulk create con la marca --instance-flexibility-policy. Para anular el disco de arranque predeterminado de instanceProperties, incluye también la marca --boot-disk-device-name y especifica el mismo deviceName en la selección de instancias:

gcloud compute instances bulk create \
    --name-pattern=NAME_PATTERN \
    --region=REGION \
    --count=COUNT \
    --boot-disk-device-name=BOOT_DISK_DEVICE_NAME \
    --instance-flexibility-policy='{"instanceSelections":
        {"INSTANCE_SELECTION_1":{"rank":RANK_1,"machineTypes":["MACHINE_TYPE_1","MACHINE_TYPE_2"],"minCpuPlatform":"MIN_CPU_PLATFORM_1","disks":[{"deviceName":"BOOT_DISK_DEVICE_NAME_1","boot":true,"initializeParams":{"diskType":"DISK_TYPE_1","diskSizeGb":DISK_SIZE_1,"sourceImage":"projects/IMAGE_PROJECT_1/global/images/IMAGE_1"}}]},
        "INSTANCE_SELECTION_2":{"rank":RANK_2,"machineTypes":["MACHINE_TYPE_3"],"minCpuPlatform":"MIN_CPU_PLATFORM_2","disks":[{"deviceName":"BOOT_DISK_DEVICE_NAME_2","boot":true,"initializeParams":{"diskType":"DISK_TYPE_2","diskSizeGb":DISK_SIZE_2,"sourceImage":"projects/IMAGE_PROJECT_2/global/images/IMAGE_2"}}]}}}'

Como alternativa, para configurar la política de flexibilidad de instancias con un archivo YAML o JSON, usa la marca --flags-file en lugar de la marca --instance-flexibility-policy:

gcloud compute instances bulk create \
    --name-pattern=NAME_PATTERN \
    --region=REGION \
    --count=COUNT \
    --boot-disk-device-name=BOOT_DISK_DEVICE_NAME \
    --flags-file=FILE_NAME.yaml

Reemplaza lo siguiente:

  • COUNT: Es la cantidad de VMs que se crearán.
  • NAME_PATTERN: Es el patrón de nombres para las VMs.
  • REGION: Es la región en la que se crearán las VMs.
  • BOOT_DISK_DEVICE_NAME: Es el nombre del dispositivo para el disco de arranque predeterminado en instanceProperties.
  • INSTANCE_SELECTION_1, INSTANCE_SELECTION_2: Son los nombres de las selecciones de instancias.
  • RANK_1, RANK_2: Son números opcionales que representan tu orden de preferencia para cada selección de instancia. Un valor más bajo indica una preferencia más alta.
  • MACHINE_TYPE_1, MACHINE_TYPE_2: Los tipos de máquina para la primera selección de instancias
  • MACHINE_TYPE_3: el tipo de máquina para la segunda selección de instancia
  • MIN_CPU_PLATFORM_1, MIN_CPU_PLATFORM_2: Son las plataformas de CPU mínimas opcionales para las VMs en cada selección de instancias.
  • BOOT_DISK_DEVICE_NAME_1, BOOT_DISK_DEVICE_NAME_2: Son los nombres de los dispositivos para los discos de arranque en cada selección de instancias. Para anular el disco de arranque predeterminado, especifica el mismo nombre que BOOT_DISK_DEVICE_NAME.
  • DISK_TYPE_1, DISK_TYPE_2: Son los tipos de disco para las anulaciones de disco, como pd-ssd o hyperdisk-balanced.
  • DISK_SIZE_1, DISK_SIZE_2: Son los tamaños de los discos para las anulaciones de discos.
  • IMAGE_PROJECT_1 y IMAGE_PROJECT_2: Son los proyectos que contienen las imágenes para las anulaciones de disco.
  • IMAGE_1 y IMAGE_2: Son los nombres de las imágenes o las familias de imágenes para las anulaciones de disco.
  • FILE_NAME.yaml: Es el nombre del archivo YAML o JSON que contiene la configuración de --instance-flexibility-policy.

Ejemplo

En el siguiente ejemplo, se crean 10 VMs con dos selecciones de instancias que especifican una plataforma de CPU mínima, anulan el disco de arranque predeterminado y adjuntan discos adicionales:

gcloud compute instances bulk create \
    --name-pattern=test-bulk-# \
    --region=us-central1 \
    --count=10 \
    --boot-disk-device-name=boot-disk \
    --instance-flexibility-policy='{"instanceSelections":
        {"selection-1":{"machineTypes":["n2-standard-8","c2-standard-8"],"minCpuPlatform":"Intel Cascade Lake","disks":[{"type":"PERSISTENT","deviceName":"boot-disk","boot":true,"initializeParams":{"diskType":"pd-ssd","diskSizeGb":50,"sourceImage":"projects/debian-cloud/global/images/family/debian-12"}},{"type":"SCRATCH","initializeParams":{"diskType":"local-ssd"}}]},
        "selection-2":{"machineTypes":["c4a-standard-8"],"disks":[{"type":"PERSISTENT","deviceName":"boot-disk","boot":true,"initializeParams":{"diskType":"hyperdisk-balanced","diskSizeGb":50,"sourceImage":"projects/debian-cloud/global/images/family/debian-12-arm64"}},{"type":"PERSISTENT","deviceName":"data-disk","initializeParams":{"diskType":"hyperdisk-balanced","diskSizeGb":128}}]}}}'

Como alternativa, si usas la marca --flags-file, puedes especificar la misma política de flexibilidad de instancias en un archivo YAML:

--instance-flexibility-policy:
  instanceSelections:
    selection-1:
      machineTypes:
        - n2-standard-8
        - c2-standard-8
      minCpuPlatform: Intel Cascade Lake
      disks:
        - type: PERSISTENT
          deviceName: boot-disk
          boot: true
          initializeParams:
            diskType: pd-ssd
            diskSizeGb: 50
            sourceImage: projects/debian-cloud/global/images/family/debian-12
        - type: SCRATCH
          initializeParams:
            diskType: local-ssd
    selection-2:
      machineTypes:
        - c4a-standard-8
      disks:
        - type: PERSISTENT
          deviceName: boot-disk
          boot: true
          initializeParams:
            diskType: hyperdisk-balanced
            diskSizeGb: 50
            sourceImage: projects/debian-cloud/global/images/family/debian-12-arm64
        - type: PERSISTENT
          deviceName: data-disk
          initializeParams:
            diskType: hyperdisk-balanced
            diskSizeGb: 128

REST

En la API de Compute Engine, realiza una solicitud POST al método regionInstances.bulkInsert. En cada entrada instanceSelections de instanceFlexibilityPolicy, incluye el campo minCpuPlatform para anular instanceProperties.minCpuPlatform y el campo disks para anular o agregar a instanceProperties.disks:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "disks": [
      {
        "boot": true,
        "deviceName": "boot-disk",
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [{}]
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2"
        ],
        "minCpuPlatform": "MIN_CPU_PLATFORM_1",
        "disks": [
          {
            "type": "PERSISTENT",
            "deviceName": "boot-disk",
            "initializeParams": {
              "diskType": "pd-ssd",
              "diskSizeGb": 50,
              "sourceImage": "projects/IMAGE_PROJECT_1/global/images/IMAGE_1"
            },
            "boot": true
          },
          {
            "type": "SCRATCH",
            "initializeParams": {
              "diskType": "local-ssd"
            }
          }
        ]
      },
      "INSTANCE_SELECTION_2": {
        "machineTypes": [
          "MACHINE_TYPE_3"
        ],
        "minCpuPlatform": "MIN_CPU_PLATFORM_2",
        "disks": [
          {
            "type": "PERSISTENT",
            "deviceName": "boot-disk",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 50,
              "sourceImage": "projects/IMAGE_PROJECT_2/global/images/IMAGE_2"
            },
            "boot": true
          },
          {
            "type": "PERSISTENT",
            "deviceName": "data-disk",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 128,
              "sourceImage": "projects/IMAGE_PROJECT_3/global/images/IMAGE_3"
            }
          }
        ]
      }
    }
  }
}

Reemplaza lo siguiente:

  • COUNT: Es la cantidad de VMs que se crearán.
  • NAME_PATTERN: el patrón de nombres para las VMs
  • INSTANCE_SELECTION_1: Es el nombre de la primera selección de instancias.
  • INSTANCE_SELECTION_2: Es el nombre de la segunda selección de instancias.
  • MACHINE_TYPE_1, MACHINE_TYPE_2: Los tipos de máquina para la primera selección de instancias
  • MACHINE_TYPE_3: el tipo de máquina para la segunda selección de instancia
  • MIN_CPU_PLATFORM_1, MIN_CPU_PLATFORM_2: Plataformas de CPU mínimas opcionales para las VMs en cada selección de instancias
  • IMAGE_PROJECT: Es el proyecto que contiene la imagen de arranque predeterminada en instanceProperties.
  • IMAGE: Es el nombre de la imagen de arranque o la familia de imágenes predeterminada en instanceProperties.
  • IMAGE_PROJECT_1, IMAGE_PROJECT_2, IMAGE_PROJECT_3: Son los proyectos que contienen las imágenes para las anulaciones de disco.
  • IMAGE_1, IMAGE_2, IMAGE_3: Son los nombres de las imágenes para las anulaciones del disco.
  • PROJECT_ID: Es el ID del proyecto.
  • REGION: Es la región en la que se crearán las VMs.

Ejemplo

En el siguiente ejemplo, se crean 10 VMs con dos selecciones de instancias que especifican una plataforma de CPU mínima, anulan el disco de arranque predeterminado y conectan discos adicionales:

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
  "count": 10,
  "namePattern": "test-bulk-#",
  "instanceProperties": {
    "disks": [
      {
        "boot": true,
        "deviceName": "boot-disk",
        "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/family/debian-12"
        }
      }
    ],
    "networkInterfaces": [{}]
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "selection-1": {
        "machineTypes": [
          "n2-standard-8",
          "c2-standard-8"
        ],
        "minCpuPlatform": "Intel Cascade Lake",
        "disks": [
          {
            "type": "PERSISTENT",
            "deviceName": "boot-disk",
            "initializeParams": {
              "diskType": "pd-ssd",
              "diskSizeGb": 50,
              "sourceImage": "projects/debian-cloud/global/images/family/debian-12"
            },
            "boot": true
          },
          {
            "type": "SCRATCH",
            "initializeParams": {
              "diskType": "local-ssd"
            }
          }
        ]
      },
      "selection-2": {
        "machineTypes": [
          "c4a-standard-8"
        ],
        "disks": [
          {
            "type": "PERSISTENT",
            "deviceName": "boot-disk",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 50,
              "sourceImage": "projects/debian-cloud/global/images/family/debian-12-arm64"
            },
            "boot": true
          },
          {
            "type": "PERSISTENT",
            "deviceName": "data-disk",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 128
            }
          }
        ]
      }
    }
  }
}