Manage licenses

This document explains how to manage licenses associated with a Compute Engine instance. This includes how to append, remove, replace, and view the history of license updates. For more information about licenses on Compute Engine see About licenses.

Restrictions for managing licenses:

  • You can only add a license to a disk if AppendableToDisk is true.
  • You can only remove (with no replacement provided) if RemovableFromDisk is true.
  • You can only replace a license with one of the replacements listed in AllowedReplacementLicenses.

For Ubuntu LTS, to upgrade your license to Ubuntu Pro to enable Extended Security Maintenance (ESM), see Upgrade from Ubuntu to Ubuntu Pro.

To update your on-demand RHEL license to include extended support, see Append the RHEL Extended Life Cycle Support (ELS) Add-On to your license.

Before you begin

  • If you haven't already, then set up authentication. Authentication is the process by which your identity is verified for access to Trusted Cloud by S3NS services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine by selecting one of the following options:

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

    Console

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

    gcloud

      1. After installing the Google Cloud CLI, sign in to the gcloud CLI with your federated identity and 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.

      After installing the Google Cloud CLI, sign in to the gcloud CLI with your federated identity and then initialize it by running the following command:

      gcloud init

    For more information, see Authenticate for using REST in the Trusted Cloud authentication documentation.

Prepare to update a disk's license

To update the disk's license while the disk is attached to a running instance, first either stop the instance or detach the disk.

  • Stop the instance. Temporarily shuts down the instance before updating the disk's license.
  • Detach the disk. This detaches the disk from the instance before updating the disk's license.

View the licenses associated with a VM

To view the licenses associated with a VM, use the Trusted Cloud console, gcloud CLI, or the Compute Engine API.

Console

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

    Go to VM instances

  2. Click the name of the VM to check the license of. The Instance details page opens.

  3. At the bottom of the Instance details page, click Equivalent Code.

  4. View the licenses field for the boot disk.

gcloud

  1. Run the following gcloud compute instances describe command:

    gcloud compute instances describe VM_NAME
    

    Replace VM_NAME with the name of your VM.

  2. View the disks section of the output. The licenses field shows the licenses associated with the boot disk.

REST

Call the instances.get v1 method:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instancesVM_NAME

Replace the following:

  • PROJECT: the name of the project
  • ZONE: the zone containing the VM
  • VM_NAME: the name of the VM

The Compute Engine API returns the licenses associated with the boot disk in the disks section of the licenses field.

Append a license during an image import

To append a license during the image import process, use the following gcloud compute images import command.

gcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE
  --os=OS

Replace the following:

  • IMAGE_NAME: the name of the image to create.
  • SOURCE_FILE: a local file or Cloud Storage URI of the virtual disk to import.
  • OS: the OS of the disk image to import. The license for the OS is inferred from the value of this flag; there isn't an explicit flag to provide license information when importing. For a list of the supported values, see --os flag.

For more information about importing images, see Importing virtual disks.

Append licenses when creating an image

To append licenses when creating an image, use the following gcloud compute images create command.

gcloud compute images create IMAGE_NAME \
  --source-image=SOURCE_IMAGE \
  --licenses=LICENSES

Replace the following:

  • IMAGE_NAME: the name of the image to create.
  • SOURCE_IMAGE: the name of the image to create the new image from.
  • LICENSES: a comma-separated list of license strings. For example, "license1", "license2".

For more information about creating images, see Creating, deleting, and deprecating custom images, and Creating a Windows image.

For more information about creating images, see Creating, deleting, and deprecating custom images, and Creating a Windows image.

Append licenses to a disk

To append licenses associated with a VM, use the gcloud CLI or the Compute Engine API.

gcloud

To append licenses to a disk using a license reference or code, use the following gcloud compute disks update my-disk command.

gcloud compute disks update DISK_NAME \
--append-licenses=LICENSES

Replace the following:

  • DISK_NAME: the name of the disk to append.
  • LICENSES: a comma-separated list of license references, for example, "projects/rhel-cloud/global/licenses/rhel-9-server", "projects/rhel-cloud/global/licenses/rhel-8-server".

REST

To append licenses to a disk using a license reference or code, call the following disks.update v1 method:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/disks/DISK_NAME?paths=licenses --data '{"name":"DISK_NAME", "licenses":["https://www.googleapis.com/compute/v1/LICENSES"]}'

Replace the following:

  • PROJECT: the name of the project
  • ZONE: the zone containing the VM
  • DISK_NAME: the name of the disk
  • LICENSES: a comma-separated list of license references, for example, "projects/rhel-cloud/global/licenses/rhel-9-server", "projects/rhel-cloud/global/licenses/rhel-8-server".

Replace licenses on a disk

To replace licenses associated with a VM, use the gcloud CLI or the Compute Engine API.

gcloud

To replace a license on a disk using a license reference or code, use the following gcloud compute disks update my-disk command.

gcloud compute disks update DISK_NAME \
--replace-licenses=PREVIOUS_LICENSE,NEW_LICENSE

Replace the following:

  • DISK_NAME: the name of the disk to append.
  • PREVIOUS_LICENSE: the previous license reference being replaced, for example, "projects/rhel-cloud/global/licenses/rhel-9-server", "projects/rhel-cloud/global/licenses/rhel-8-server".
  • NEW_LICENSE: the new license reference, for example, "projects/rhel-cloud/global/licenses/rhel-9-server", "projects/rhel-cloud/global/licenses/rhel-8-server".

REST

To replace a license on a disk using a license reference or code, call the disks.update v1 method and replace the previous license with the new license in the request body as follows:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/disks/DISK_NAME?paths=licenses --data '{"name":"DISK_NAME", "licenses":["https://www.googleapis.com/compute/v1/NEW_LICENSE"]}'

Replace the following:

  • PROJECT: the name of the project
  • ZONE: the zone containing the VM
  • DISK_NAME: the name of the disk
  • NEW_LICENSE: the new license reference, for example, "projects/rhel-cloud/global/licenses/rhel-9-server", "projects/rhel-cloud/global/licenses/rhel-8-server".

Remove licenses from a disk

To remove individual licenses associated with a VM, use the gcloud CLI and Compute Engine API.

gcloud

To remove licenses from a disk using a license reference or code, use the following gcloud compute disks update my-disk command.

gcloud compute disks update DISK_NAME \
--remove-licenses=LICENSES

Replace the following:

  • DISK_NAME: the name of the disk to remove.
  • LICENSES: a comma-separated list of license references, for example, "projects/rhel-cloud/global/licenses/rhel-9-server", "projects/rhel-cloud/global/licenses/rhel-8-server".

REST

To remove a license, provide an empty license field in the call request along with the path selector by calling the following disks.update v1 method:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/disks/DISK_NAME?paths=licenses --data '{"name":"DISK_NAME", "licenses":[]}'

Replace the following:

  • PROJECT: the name of the project
  • ZONE: the zone containing the VM
  • DISK_NAME: the name of the disk
  • LICENSES: leave blank.

View the history of license updates

View the history of license updates for VMs in a project by using the following procedure:

  1. In the Trusted Cloud console, go to the Logs Explorer page.

    Go to Logs Explorer

  2. In the toolbar, verify that Show query is enabled.

  3. Copy the following expression into the query editor:

    resource.type="gce_disk"
    logName="projects/PROJECT_NAME/logs/cloudaudit.googleapis.com%2Factivity"
    severity>=NOTICE
    protoPayload.request.@type="type.googleapis.com/compute.disks.update"
    protoPayload.request.licenses:*
    
  4. Replace PROJECT_NAME with the name of the project.

  5. Click Run query.

What's next