VMs im Bulk mit Instanzflexibilität erstellen

In diesem Dokument wird beschrieben, wie Sie die Instanzflexibilität konfigurieren, wenn Sie VMs im Bulk erstellen. Mit der Instanzflexibilität können Sie mehrere Maschinentypen angeben, sie nach Priorität einstufen und die Einstellungen für die Mindest-CPU-Plattform und die Festplatte für jede Auswahl überschreiben. So kann Compute Engine VMs basierend auf der Kapazität und der Verfügbarkeit von Kontingenten in einer Region bereitstellen.

Weitere Informationen zur Instanzflexibilität für VMs, die im Bulk erstellt werden, finden Sie unter Informationen zur Instanzflexibilität für VMs, die im Bulk erstellt werden.

Hinweis

Erforderliche Rollen

Um die erforderlichen Berechtigungen zum Erstellen mehrerer VMs zu erhalten, bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) für das Projekt zuzuweisen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen von VMs im Bulk erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die genau erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um VMs im Bulk zu erstellen:

  • compute.instances.create für das Projekt
  • Zum Erstellen der VM mit einem benutzerdefinierten Image: compute.images.useReadOnly für das Image
  • Zum Erstellen der VM mit einem Snapshot: compute.snapshots.useReadOnly für den Snapshot
  • Zum Erstellen der VM mit einer Instanzvorlage: compute.instanceTemplates.useReadOnly für die Instanzvorlage
  • Zum Angeben eines Subnetzes für Ihre VM: compute.subnetworks.use für das Projekt oder für das ausgewählte Subnetz
  • Zum Festlegen einer statischen IP-Adresse für die VM: compute.addresses.use für das Projekt
  • Zum Zuweisen einer externen IP-Adresse zur VM, wenn Sie ein VPC-Netzwerk verwenden: compute.subnetworks.useExternalIp für das Projekt oder für das ausgewählte Subnetz
  • Zum Zuweisen eines Legacy-Netzwerks zur VM: compute.networks.use für das Projekt
  • Zum Zuweisen einer externen IP-Adresse zur VM, wenn Sie ein Legacy-Netzwerk verwenden: compute.networks.useExternalIp für das Projekt
  • Zum Festlegen von Metadaten der VM-Instanz für die VM: compute.instances.setMetadata für das Projekt
  • Zum Festlegen von Tags für die VM: compute.instances.setTags für die VM
  • Zum Festlegen von Labels für die VM: compute.instances.setLabels für die VM
  • Zum Festlegen eines Dienstkontos für die VM: compute.instances.setServiceAccount für die VM
  • Zum Erstellen eines neuen Laufwerks für die VM: compute.disks.create für das Projekt
  • Zum Anhängen eines vorhandenen Laufwerks im Lese- oder Lese-/Schreibmodus: compute.disks.use für das Laufwerk
  • Zum Anhängen eines vorhandenen Laufwerks im Lesemodus: compute.disks.useReadOnly für das Laufwerk

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

VMs mit mehreren Maschinentypen mit gleicher Präferenz erstellen

Wenn Ihre Arbeitslast auf mehreren verschiedenen Maschinentypen ausgeführt werden kann, können Sie in einer einzelnen Instanzauswahl eine Liste aller kompatiblen Maschinentypen angeben. Die folgenden Beispiele zeigen, wie Sie mehrere Maschinentypen mit gleicher Priorität angeben können.

gcloud

Wenn Sie VMs im Bulk mit einer einzelnen Instanzauswahl erstellen möchten, verwenden Sie den Befehl gcloud compute instances bulk create mit dem Flag --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

Ersetzen Sie Folgendes:

  • COUNT: die Anzahl der zu erstellenden VMs.
  • NAME_PATTERN: das Namensmuster für die VMs
  • MACHINE_TYPE_1, MACHINE_TYPE_2: die für die VMs zu verwendenden Maschinentypen
  • REGION: die Region, in der die VMs erstellt werden sollen

Beispiel

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

Stellen Sie in der Compute Engine API eine POST-Anfrage an die Methode regionInstances.bulkInsert. Geben Sie im Anfragetext instanceFlexibilityPolicy mit einem instanceSelections-Eintrag an, in dem die Maschinentypen aufgeführt sind.

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

Ersetzen Sie Folgendes:

  • COUNT: die Anzahl der zu erstellenden VMs.
  • NAME_PATTERN: das Namensmuster für die VMs
  • MACHINE_TYPE_1, MACHINE_TYPE_2: die für die VMs zu verwendenden Maschinentypen
  • IMAGE_PROJECT: Das Projekt, das das Image enthält.
  • IMAGE: Der Name des zu verwendenden Images oder der Image-Familie.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der die VMs erstellt werden sollen

Beispiel

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

VMs mit mehreren Maschinentypen erstellen, die nach Präferenz sortiert sind

Wenn Compute Engine Maschinentypen in einer bestimmten Reihenfolge auswählen soll, können Sie mehrere Instanzauswahlen konfigurieren. Jede Instanzauswahl enthält eine Liste von Maschinentypen und einen Rang. Der Rang ist eine Ganzzahl, die die Priorität für die Maschinentypen definiert. Ein niedrigerer Rang bedeutet eine höhere Präferenz. Compute Engine versucht, VMs mit Maschinentypen mit einer höheren Priorität (niedrigerer Rang) zu erstellen. Wenn diese Maschinentypen nicht verfügbar sind, verwendet Compute Engine Maschinentypen mit einer niedrigeren Priorität (höherer Rang).

Die folgenden Beispiele zeigen, wie Sie mehrere Instanzauswahlen mit Rängen angeben.

gcloud

Wenn Sie VMs im Bulk mit mehreren Instanzauswahlen erstellen möchten, verwenden Sie den Befehl gcloud compute instances bulk create und geben Sie das Flag --instance-selection mehrmals an.

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"

Ersetzen Sie Folgendes:

  • COUNT: die Anzahl der zu erstellenden VMs.
  • NAME_PATTERN: das Namensmuster für die VMs
  • INSTANCE_SELECTION_1: Der Name für die erste Instanzauswahl.
  • INSTANCE_SELECTION_2: der Name für die Auswahl der zweiten Instanz
  • MACHINE_TYPE_1, MACHINE_TYPE_2: die Maschinentypen für die erste Instanzauswahl
  • MACHINE_TYPE_3, MACHINE_TYPE_4: die Maschinentypen für die zweite Instanzauswahl
  • REGION: die Region, in der die VMs erstellt werden sollen

Beispiel

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

Stellen Sie in der Compute Engine API eine POST-Anfrage an die Methode regionInstances.bulkInsert. Geben Sie im Anfragetext instanceFlexibilityPolicy an und legen Sie mehrere Einträge in instanceSelections fest, jeweils mit einer Liste von Maschinentypen und einem 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
      }
    }
  }
}

Ersetzen Sie Folgendes:

  • COUNT: die Anzahl der zu erstellenden VMs.
  • NAME_PATTERN: das Namensmuster für die VMs
  • INSTANCE_SELECTION_1: Der Name für die erste Instanzauswahl.
  • INSTANCE_SELECTION_2: der Name für die Auswahl der zweiten Instanz
  • MACHINE_TYPE_1, MACHINE_TYPE_2: die Maschinentypen für die erste Instanzauswahl
  • MACHINE_TYPE_3, MACHINE_TYPE_4: die Maschinentypen für die zweite Instanzauswahl
  • IMAGE_PROJECT: Das Projekt, das das Image enthält.
  • IMAGE: Der Name des zu verwendenden Images oder der Image-Familie.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der die VMs erstellt werden sollen

Beispiel

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

VMs mit mehreren Maschinentypen, Mindest-CPU-Plattform und Laufwerküberschreibungen erstellen

Zusätzlich zur Angabe von Maschinentypen und Rängen können Sie die Mindest-CPU-Plattform überschreiben und die Laufwerkdefinitionen in instanceProperties für jede Instanzauswahl überschreiben oder ergänzen. Wenn in instanceProperties beispielsweise ein Persistent Disk angegeben ist und Sie eine N4-Maschinenserie auswählen, müssen Sie das Bootlaufwerk mit einem unterstützten Google Cloud Hyperdisk-Typ überschreiben.

Weitere Informationen zu unterstützten Laufwerkstypen und dazu, wie Compute Engine Überschreibungen anwendet, finden Sie in den folgenden Ressourcen:

Wählen Sie eine der folgenden Optionen aus, um VMs im Bulk mit mehreren Maschinentypen, Mindest-CPU-Plattformen und Festplattenüberschreibungen zu erstellen:

gcloud

Wenn Sie VMs im Bulk mit mehreren Maschinentypen, einer kleinstmöglichen CPU-Plattform und Überschreibungen für Laufwerke erstellen möchten, verwenden Sie den Befehl gcloud compute instances bulk create mit dem Flag --instance-flexibility-policy. Wenn Sie das Standard-Bootlaufwerk aus instanceProperties überschreiben möchten, fügen Sie auch das Flag --boot-disk-device-name ein und geben Sie bei der Instanzauswahl dieselbe deviceName an:

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"}}]}}}'

Alternativ können Sie die Richtlinie für die Instanzflexibilität mit einer YAML- oder JSON-Datei konfigurieren. Verwenden Sie dazu das --flags-file-Flag anstelle des --instance-flexibility-policy-Flags:

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

Ersetzen Sie Folgendes:

  • COUNT: die Anzahl der zu erstellenden VMs.
  • NAME_PATTERN: das Namensmuster für die VMs
  • REGION: die Region, in der die VMs erstellt werden sollen
  • BOOT_DISK_DEVICE_NAME: der Gerätename für das Standard-Bootlaufwerk in instanceProperties
  • INSTANCE_SELECTION_1, INSTANCE_SELECTION_2: die Namen der Instanzauswahlen
  • RANK_1, RANK_2: optionale Zahlen, die Ihre bevorzugte Reihenfolge für die Auswahl der einzelnen Instanzen darstellen. Ein niedrigerer Wert bedeutet eine höhere Präferenz.
  • MACHINE_TYPE_1, MACHINE_TYPE_2: die Maschinentypen für die erste Instanzauswahl
  • MACHINE_TYPE_3: der Maschinentyp für die zweite Instanzauswahl
  • MIN_CPU_PLATFORM_1, MIN_CPU_PLATFORM_2: optionale Mindest-CPU-Plattformen für die VMs in jeder Instanzauswahl
  • BOOT_DISK_DEVICE_NAME_1, BOOT_DISK_DEVICE_NAME_2: die Gerätenamen für die Bootlaufwerke in jeder Instanzauswahl. Wenn Sie das Standard-Bootlaufwerk überschreiben möchten, geben Sie denselben Namen wie BOOT_DISK_DEVICE_NAME an.
  • DISK_TYPE_1, DISK_TYPE_2: die Laufwerkstypen für die Laufwerküberschreibungen, z. B. pd-ssd oder hyperdisk-balanced
  • DISK_SIZE_1, DISK_SIZE_2: Die Laufwerkgrößen für die Laufwerküberschreibungen.
  • IMAGE_PROJECT_1, IMAGE_PROJECT_2: die Projekte, die die Images für die Laufwerküberschreibungen enthalten
  • IMAGE_1, IMAGE_2: Die Namen der Images oder Image-Familien für die Laufwerküberschreibungen.
  • FILE_NAME.yaml: Der Name der YAML- oder JSON-Datei, die die --instance-flexibility-policy-Konfiguration enthält.

Beispiel

Im folgenden Beispiel werden 10 VMs mit zwei Instanzauswahlen erstellt, die eine Mindest-CPU-Plattform angeben, das Standard-Bootlaufwerk überschreiben und zusätzliche Laufwerke anhängen:

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}}]}}}'

Alternativ können Sie mit dem Flag --flags-file dieselbe Richtlinie für die Instanzflexibilität in einer YAML-Datei angeben:

--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

Stellen Sie in der Compute Engine API eine POST-Anfrage an die Methode regionInstances.bulkInsert. Fügen Sie in jeden instanceSelections-Eintrag von instanceFlexibilityPolicy das Feld minCpuPlatform ein, um instanceProperties.minCpuPlatform zu überschreiben, und das Feld disks, um instanceProperties.disks zu überschreiben oder zu ergänzen:

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

Ersetzen Sie Folgendes:

  • COUNT: die Anzahl der zu erstellenden VMs.
  • NAME_PATTERN: das Namensmuster für die VMs
  • INSTANCE_SELECTION_1: Der Name für die erste Instanzauswahl.
  • INSTANCE_SELECTION_2: der Name für die Auswahl der zweiten Instanz
  • MACHINE_TYPE_1, MACHINE_TYPE_2: die Maschinentypen für die erste Instanzauswahl
  • MACHINE_TYPE_3: der Maschinentyp für die zweite Instanzauswahl
  • MIN_CPU_PLATFORM_1, MIN_CPU_PLATFORM_2: optionale Mindest-CPU-Plattformen für die VMs in jeder Instanzauswahl
  • IMAGE_PROJECT: Das Projekt, das das Standard-Boot-Image in instanceProperties enthält.
  • IMAGE: Der Name des Standard-Boot-Images oder der Standard-Image-Familie in instanceProperties.
  • IMAGE_PROJECT_1, IMAGE_PROJECT_2, IMAGE_PROJECT_3: die Projekte, die die Bilder für die Laufwerküberschreibungen enthalten
  • IMAGE_1, IMAGE_2, IMAGE_3: die Namen der Images für die Laufwerküberschreibungen
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der die VMs erstellt werden sollen

Beispiel

Im folgenden Beispiel werden 10 VMs mit zwei Instanzauswahlen erstellt, die eine Mindest-CPU-Plattform angeben, das Standard-Bootlaufwerk überschreiben und zusätzliche Laufwerke anhängen:

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
            }
          }
        ]
      }
    }
  }
}