Creating and starting an Arm VM instance


The Tau T2A Arm machine series provides on-demand and Spot VMs for your Arm workloads. This page describes how to create a VM running the Tau T2A machine series.

Before you begin

Tau T2A free trial

Until March 31, 2024 Tau T2A VMs are available for a free trial. You automatically receive a monthly credit of $222 per billing account to create VM resources in the us-central1 region. You can create multiple VMs, however once the total cost of your resources exceeds $222, your account is billed for any additional resources you are using. This offer covers only VM costs. Other Compute Engine resources and services are charged to your billing account.

Available regions

This series is available only in select regions and zones.

Supported OS images

The following OS images are supported on Tau T2A VMs:

  • Debian 11
  • Ubuntu version 22.04, 20.04, or 18.04
  • Rocky Linux version 9
  • Rocky Linux Optimized for Google Cloud version 9
  • RHEL version 9
  • SLES 15
  • Container-Optimized OS (COS) milestone 101 and above

Create an Arm VM

Use the Google Cloud console, the Google Cloud CLI or the Compute Engine API to create an Arm VM. Use an Arm-supported OS image, which by default, has NVMe and gVNIC enabled. Review the T2A limitations before you create a VM.

During Public preview certain operating systems do not support all options. For example, if you are using a Debian OS you must set the secure boot option to --no-shielded-secure-boot. Check which options are supported by your OS. See Troubleshooting Arm VMs for details.

Console

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select your project and click Continue.

  3. Click Create instance.

  4. Specify a Name for your VM. For more information, see Resource naming convention.

  5. Choose a Zone for this VM that supports Tau T2A.

  6. Select General-purpose from Machine configuration.

    1. Select T2A from the Series drop-down menu.
    2. Choose a T2A Machine type from the drop-down menu.
  7. In the Boot disk section, click Change, and then do the following:

    1. On the Public images tab, choose the following:
      • The default Debian-11-Arm64 image or any other supported Arm OS.
      • Boot disk type
      • Boot disk size
    2. To confirm your boot disk options, click Select.
  8. Open the NETWORKING, DISKS, SECURITY, MANAGEMENT, SOLE-TENANCY section.

    1. Open Networking.
    2. From Network performance configuration, open the Network interface card drop-down menu and select gVNIC.
  9. To create and start the VM, click Create.

gcloud

  1. Select a public image. Make a note of the name of the image or image family and the name of the project containing the image.
  2. Use the gcloud compute instances create command to create a VM from an image family or from a specific version of an Arm OS image.
     gcloud compute instances create VM_NAME \
        --project=PROJECT_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --image-project=IMAGE_PROJECT \
       [--image=IMAGE | --image-family=IMAGE_FAMILY] \
        --network-interface=nic-type=GVNIC
 

For example:

  gcloud compute instances create arm-vm \
     --project=my-arm-project \
     --zone=us-central1-a \
     --machine-type=t2a-standard-1 \
     --image-project=debian-cloud \
     --image-family=debian-11-arm64 \
     --network-interface=nic-type=GVNIC

 

The gVNIC network interface is automatically set for you during instance creation.

API

Select a public image. Make a note of the name of the image or image family and the name of the project containing the image. Call the instances.insert method to create a VM from an image family or from a specific version of an Arm OS image:

https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
 "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
 "name": "VM_NAME",
"disks": [
   {
     "initializeParams": {
       "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
    },
     "boot": true
   }

     ],
     "networkInterfaces":
    {
       "nicType": "GVNIC"
   }
}

Replace the following:

  • PROJECT_ID: the ID of the project in which you are creating your VM.
  • ZONE: the zone in which you are creating your VM.
  • MACHINE_TYPE: the machine type of your VM. For example: t2a-standard-2
  • VM_NAME: the name for your VM.
  • IMAGE_PROJECT: project containing the image. For example: If you specify debian-11 as the image family, specify debian-cloud as the image project.
  • IMAGE or IMAGE_FAMILY: specify one of the following:
    • IMAGE: a specific version of a public image. For example: specify the sourceImage as projects/debian-cloud/global/images/debian-11-arm64
    • IMAGE_FAMILY: an image family This creates the VM from the most recent, non-deprecated OS image. For example, specify "sourceImage": "projects/debian-cloud/global/images/family/debian-11-arm64", to create a VM from the latest version of the OS image in the Debian 11 Arm image family.

For example:

https://compute.googleapis.com/compute/v1/projects/my-arm-project/zones/us-central1-a/instances

{
 "machineType": "zones/us-central1-a/machineTypes/t2a-standard-2",
 "name": "arm-vm",
 "disks": [
   {
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/family/debian-11-arm64"
    },
     "boot": true
   }
     ],
     "networkInterfaces":
    {
       "nicType": "GVNIC"
   }
}

What's next?