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

  • If you haven't already, set up authentication. Authentication is the process by which your identity is verified for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine as follows.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

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

REST

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?