2021 年 4 月 21 日,Ubuntu 16.04 LTS 已达到维护终止期限,不再受支持或接收安全更新。如果您升级到 Ubuntu Pro,则可以在扩展安全维护 (ESM) 期间继续接收安全更新。
本文档介绍如何通过对每个虚拟机执行以下操作来从 Ubuntu 升级到 Ubuntu Pro:
- 安装更新和依赖项
- 附加 Ubuntu Pro 许可
- 验证许可
支持的升级路径
下表展示了受支持的升级路径:
初始版本 | 最终版本 |
---|---|
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。
准备工作
- 如果您要使用本指南中的命令行示例,请执行以下操作:
- 安装或更新到 Google Cloud CLI 的最新版本。
- 设置默认区域和可用区。
-
在每个虚拟机上运行以下命令,并将
VM_NAME
替换为要升级的虚拟机的名称:-
使用以下命令更新软件包索引:
gcloud compute ssh VM_NAME --command "sudo apt update"
-
使用以下命令安装最新版本的软件包:
gcloud compute ssh VM_NAME --command "sudo apt -f upgrade"
-
使用以下命令安装 Ubuntu Pro:
gcloud compute ssh VM_NAME --command "sudo apt -f install ubuntu-advantage-pro"
-
使用以下命令更新软件包索引:
附加许可
按照以下步骤附加 Ubuntu Pro 许可:
使用
gcloud compute instances stop
命令停止虚拟机:gcloud compute instances stop VM_NAME \ --zone=ZONE
替换以下内容:
VM_NAME
:要停止的虚拟机的名称ZONE
:包含要停止的虚拟机的可用区
使用
gcloud compute instances describe
命令获取与虚拟机关联的磁盘列表:gcloud compute instances describe VM_NAME \ --zone=ZONE \ --format="yaml(disks)"
替换以下内容:
VM_NAME
:要从中获取关联磁盘列表的虚拟机的名称ZONE
:要从中获取关联磁盘列表的虚拟机的可用区
验证输出是否类似于以下内容:
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
。通过运行以下
gcloud compute disks list
命令来获取启动磁盘的名称:gcloud compute disks list
使用
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 许可:
通过运行
gcloud beta compute disks describe
命令获取启动磁盘的相关信息:gcloud beta compute disks describe BOOT_DISK_NAME \ --zone=ZONE
替换以下内容:
BOOT_DISK_NAME
:要验证其许可的启动磁盘的名称ZONE
:包含要验证其许可的启动磁盘的区域
验证输出类似于以下内容:
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
通过检查上一步的相应许可字符串的
userLicenses
字段输出,验证 Ubuntu Pro 许可是否已附加到启动磁盘。如果
userLicenses
字段不包含预期的许可字符串,您可能需要清除,然后再更新用户许可。如需了解详情,请参阅gcloud beta compute disks update
命令。使用
gcloud compute instances start
命令启动虚拟机:gcloud compute instances start VM_NAME \ --zone=ZONE \ [--csek-key-file ENCRYPTION_KEY]
替换以下内容:
VM_NAME
:要启动的虚拟机的名称ZONE
:包含要启动的虚拟机的可用区ENCRYPTION_KEY
:可选标志。如果启动磁盘已加密,则用于指定 CSEK(客户提供的加密密钥)文件的路径
虚拟机启动后,运行
gcloud compute ssh
命令以验证 Ubuntu ESM 是否已授权并启用:gcloud compute ssh VM_NAME --command "sudo ua status --wait" \ --zone=ZONE
替换以下内容:
VM_NAME
:要验证的虚拟机的名称ZONE
:包含要验证的虚拟机的可用区
通过验证输出类似于以下内容,检查 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
查看审核日志
按照以下步骤查看许可更新历史记录:
在 Google Cloud Console 中,转到活动页面。
在类别下的过滤条件窗格中,为活动类型选择配置。
在类别下的过滤条件窗格中,为资源类型选择磁盘。