从 Ubuntu Pro 升级到 Ubuntu Pro


2021 年 4 月 21 日,Ubuntu 16.04 LTS 已达到维护终止期限,不再受支持或接收安全更新。如果您升级到 Ubuntu Pro,则可以在扩展安全维护 (ESM) 期间继续接收安全更新。

本文档介绍如何通过对每个虚拟机执行以下操作来从 Ubuntu 升级到 Ubuntu Pro:

  1. 安装更新和依赖项
  2. 附加 Ubuntu Pro 许可
  3. 验证许可

支持的升级路径

下表展示了受支持的升级路径:

初始版本 最终版本
Ubuntu 16.04 LTS Ubuntu Pro 16.04 LTS
Ubuntu 18.04 LTS Ubuntu Pro 18.04 LTS
Ubuntu 20.04 LTS Ubuntu Pro 20.04 LTS

限制

  • 您必须先停止虚拟机,然后才能附加许可。

  • 您只能从 Ubuntu LTS 升级到相同版本的 Ubuntu Pro LTS。例如,您可以从 Ubuntu 16.04 LTS 升级到 Ubuntu Pro 16.04 LTS,但不能从 Ubuntu 16.04 LTS 升级到 Ubuntu Pro 20.04 LTS。

结算

您需要根据付费映像的价格为 Ubuntu Pro LTS 付费。

如需详细了解结算功能,请参阅 Cloud Billing

准备工作

  • 如果您要使用本指南中的命令行示例,请执行以下操作:
    1. 安装或更新到 Google Cloud CLI 的最新版本。
    2. 设置默认区域和可用区
  • 在每个虚拟机上运行以下命令,并将 VM_NAME 替换为要升级的虚拟机的名称:

    1. 使用以下命令更新软件包索引:
      gcloud compute ssh VM_NAME --command "sudo apt update"
    2. 使用以下命令安装最新版本的软件包:
      gcloud compute ssh VM_NAME --command "sudo apt -f upgrade"
    3. 使用以下命令安装 Ubuntu Pro:
      gcloud compute ssh VM_NAME --command "sudo apt -f install ubuntu-advantage-pro"

附加许可

按照以下步骤附加 Ubuntu Pro 许可:

  1. 使用 gcloud compute instances stop 命令停止虚拟机:

    gcloud compute instances stop VM_NAME \
       --zone=ZONE
    

    替换以下内容:

    • VM_NAME:要停止的虚拟机的名称
    • ZONE:包含要停止的虚拟机的可用区
  2. 使用 gcloud compute instances describe 命令获取与虚拟机关联的磁盘列表:

    gcloud compute instances describe VM_NAME \
       --zone=ZONE \
       --format="yaml(disks)"
    

    替换以下内容:

    • VM_NAME:要从中获取关联磁盘列表的虚拟机的名称

    • ZONE:要从中获取关联磁盘列表的虚拟机的可用区

  3. 验证输出是否类似于以下内容:

    disks:
    - autoDelete: true
      boot: true
      deviceName: ubuntu
      diskSizeGb: '10'
      guestOsFeatures:
      - type: VIRTIO_SCSI_MULTIQUEUE
      - type: SEV_CAPABLE
      - type: UEFI_COMPATIBLE
      - type: GVNIC
      index: 0
      interface: SCSI
      kind: compute#attachedDisk
      licenses:
      - https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/licenses/ubuntu-1604-xenial
      mode: READ_WRITE
      shieldedInstanceInitialState:
        dbxs:
        - content: ...
          fileType: BIN
      source: https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/disks/VM_NAME
      type: PERSISTENT
    

    请注意,尚未附加 userLicenses

  4. 通过运行以下 gcloud compute disks list 命令来获取启动磁盘的名称:

    gcloud compute disks list
    
  5. 使用 gcloud beta compute disks update 命令通过 Ubuntu Pro 许可 URI 更新启动磁盘:

    gcloud beta compute disks update BOOT_DISK_NAME \
       --zone=ZONE \
       --update-user-licenses="LICENSE_URI"
    

    替换以下内容:

    • BOOT_DISK_NAME:要将许可附加到的启动磁盘的名称。

    • ZONE:包含要将许可附加到的启动磁盘的可用区。

    • LICENSE_URI:要升级到的 Ubuntu Pro 版本的许可 URI。下表展示了受支持的 Ubuntu Pro 版本的许可 URI:

      Ubuntu Pro 版本 许可 URI
      Ubuntu Pro 16.04 LTS https://www.googleapis.com/compute/v1/projects/ubuntu-os-pro-cloud/global/licenses/ubuntu-pro-1604-lts
      Ubuntu Pro 18.04 LTS https://www.googleapis.com/compute/v1/projects/ubuntu-os-pro-cloud/global/licenses/ubuntu-pro-1804-lts
      Ubuntu Pro 20.04 LTS https://www.googleapis.com/compute/v1/projects/ubuntu-os-pro-cloud/global/licenses/ubuntu-pro-2004-lts

验证许可

按照以下步骤验证 Ubuntu Pro 许可:

  1. 通过运行 gcloud beta compute disks describe 命令获取启动磁盘的相关信息:

    gcloud beta compute disks describe BOOT_DISK_NAME \
       --zone=ZONE
    

    替换以下内容:

    • BOOT_DISK_NAME:要验证其许可的启动磁盘的名称

    • ZONE:包含要验证其许可的启动磁盘的区域

  2. 验证输出类似于以下内容:

    creationTimestamp: '2021-10-20T17:20:26.616-07:00'
    guestOsFeatures:
    - type: VIRTIO_SCSI_MULTIQUEUE
    - type: SEV_CAPABLE
    - type: UEFI_COMPATIBLE
    - type: GVNIC
    id: '7008232787326864549'
    kind: compute#disk
    labelFingerprint: 42WmSpB8rSM=
    lastAttachTimestamp: '2021-10-20T17:20:26.617-07:00'
    licenseCodes:
    - '1000201'
    - '8045211386737108299'
    licenses:
    - https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/licenses/ubuntu-1604-xenial
    name: ubuntu
    physicalBlockSizeBytes: '4096'
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/disks/DISK_NAME
    sizeGb: '10'
    sourceImage: https://www.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/IMAGE
    sourceImageId: '1233998915439563944'
    status: READY
    type: https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/diskTypes/DISK_TYPE
    userLicenses:
    - https://www.googleapis.com/compute/v1/projects/ubuntu-os-pro-cloud/global/licenses/ubuntu-pro-1604-lts
    users:
    - https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
    zone: https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE
    
  3. 通过检查上一步的相应许可字符串的 userLicenses 字段输出,验证 Ubuntu Pro 许可是否已附加到启动磁盘。

    如果 userLicenses 字段不包含预期的许可字符串,您可能需要清除,然后再更新用户许可。如需了解详情,请参阅 gcloud beta compute disks update 命令

  4. 使用 gcloud compute instances start 命令启动虚拟机:

    gcloud compute instances start VM_NAME \
       --zone=ZONE \
       [--csek-key-file ENCRYPTION_KEY]
    

    替换以下内容:

    • VM_NAME:要启动的虚拟机的名称

    • ZONE:包含要启动的虚拟机的可用区

    • ENCRYPTION_KEY:可选标志。如果启动磁盘已加密,则用于指定 CSEK(客户提供的加密密钥)文件的路径

  5. 虚拟机启动后,运行 gcloud compute ssh 命令以验证 Ubuntu ESM 是否已授权并启用:

    gcloud compute ssh VM_NAME --command "sudo ua status --wait" \
       --zone=ZONE
    

    替换以下内容:

    • VM_NAME:要验证的虚拟机的名称

    • ZONE:包含要验证的虚拟机的可用区

  6. 通过验证输出类似于以下内容,检查 Ubuntu ESM 是否已获得授权并启用:

    SERVICE       ENTITLED  STATUS    DESCRIPTION
    cis           yes       disabled  Center for Internet Security Audit Tools
    esm-apps      yes       enabled   UA Apps: Extended Security Maintenance (ESM)
    esm-infra     yes       enabled   UA Infra: Extended Security Maintenance (ESM)
    fips          yes       n/a       NIST-certified core packages
    fips-updates  yes       n/a       NIST-certified core packages with priority security updates
    livepatch     yes       n/a       Canonical Livepatch service
    

查看审核日志

按照以下步骤查看许可更新历史记录:

  1. 在 Google Cloud Console 中,转到活动页面。

    转到“活动”

  2. 类别下的过滤条件窗格中,为活动类型选择配置

  3. 类别下的过滤条件窗格中,为资源类型选择磁盘