虚拟设备是包含虚拟机 (VM) 实例磁盘映像和硬件配置的软件包。
OVF 格式是一种广泛使用的热门虚拟设备格式。当您以 OVF 格式打包虚拟设备时,系统会生成一个 OVF 软件包。OVF 软件包是一个包含 .ovf
描述符文件以及其他一系列资源(例如磁盘)的文件夹。当 OVF 软件包归档为单个文件时,它被称为 OVA 文件。
您可以将 OVF 格式的虚拟机(无论是 OVF 软件包还是 OVA 单个文件)导入到 Compute Engine。如需检查使用虚拟设备是否是适合您的使用场景的最佳选择,请查看选择迁移路径。
导入虚拟设备时,导入过程使用存储在描述符文件中的信息在 Compute Engine 上创建并启动虚拟机。
在 Compute Engine 上,您可以按如下方式导入 OVA 或 OVF 文件:
- 将虚拟设备作为实例导入。请参阅导入 OVA 文件和导入 OVF 文件。
- 将虚拟设备作为机器映像导入。 请参阅通过虚拟设备导入机器映像。
准备工作
- 如果要导入虚拟设备的项目已定义可信映像政策,请将
projects/compute-image-import
和projects/compute-image-tools
添加到许可的发布商名单中。 - 如果您要从其他项目导入虚拟设备,请参阅跨项目导入。
- 如需了解如何满足导入映像的要求,请参阅导入和导出虚拟机映像的前提条件。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 虚拟磁盘必须采用 VMDK 或 VHD 格式。
虚拟磁盘不得加密。
如需验证虚拟机是否满足要求,您可以运行预检工具。
- 无论选用哪种 Windows 操作系统,都必须安装 PowerShell 版本 3 或更高版本。版本低于 3.0 的 PowerShell 可能会导致导入过程中使用的启动和关闭脚本出现问题。
对于所有 Linux 发行版,启动磁盘必须满足以下要求:
- 启动磁盘必须已安装 GRUB。
- 启动磁盘不得跨越多个物理磁盘。不支持使用 Logical Volume Manager (LVM) 分区的磁盘。如果磁盘跨越多个物理磁盘,则从 OVF 文件创建的虚拟机可能无法在 Compute Engine 上启动。
- OVF 文件必须如 OVF 规范文档所述那样提供
Level 1
可移植性。符合Level 2
可移植性的虚拟设备会被导入,但在导入过程中会忽略所有自定义扩展程序,例如源管理程序的具体细节。 - OVF 文件必须只包含一个虚拟机。如果存在多个虚拟机,则仅导入第一个虚拟机。
- OVF 文件中的第一个磁盘必须是可启动磁盘。
- 虚拟磁盘。从 OVF 软件包的
DiskSection
元素检索的信息。 CPU 和内存。从 OVF 软件包的
ResourceAllocationSection
中检索而来。如果 CPU 或内存配置超出 Compute Engine 支持的范围限制,则导入过程会将值设置为 Compute Engine 支持的最大值。
启动磁盘。从 OVF 软件包的
BootDeviceSection
元素检索的详细信息。访客操作系统。从 OVF 软件包的
OperatingSystemSection
元素检索的详细信息。访客操作系统信息用于在导入的实例上安装正确的驱动程序和访客环境软件包。如果在 OVF 中找到的访客操作系统信息不正确,则导入失败。您可以使用
--os
标志替换客机操作系统信息。NetworkSection
AnnotationSection
ProductSection
EulaSection
StartupSection
DeploymentOptionSection
InstallSection
EnvironmentFilesSection
SharedDiskSection
ScaleOutSection
PlacementGroupSection
PlacementSection
EncryptionSection
- 源项目:存储 OVA 或 OVF 文件的项目。
- 目标项目:要在其中创建虚拟机或机器映像的项目。
- 在源项目中,找到 Cloud Storage 存储桶。
在 Cloud Storage 存储分区上,将
roles/storage.objectViewer
授予以下服务账号:- 目标项目的 Cloud Build 服务账号:此服务账号的格式为
DESTINATION_PROJECT_NUMBER@cloudbuild.gserviceaccount.com
- 目标项目的 Compute Engine 服务账号:此服务账号的格式为
DESTINATION_PROJECT_NUMBER-compute@developer.gserviceaccount.com
将
DESTINATION_PROJECT_NUMBER
替换为目标项目的编号。如需了解如何授予对 Cloud Storage 存储桶的访问权限,请参阅向存储桶级别政策添加主账号。
- 目标项目的 Cloud Build 服务账号:此服务账号的格式为
- 将虚拟设备上传至 Cloud Storage。
如需将 OVA 文件从 Cloud Storage 导入到 Compute Engine,请使用
gcloud compute instances import
命令。gcloud compute instances import VM_NAME \ --source-uri=gs:PATH_TO_OVA_FILE
替换以下内容:
VM_NAME
:要创建的实例的名称。PATH_TO_OVA_FILE
:您的 OVA 文件在 Cloud Storage 上的路径
示例
例如,如需导入 OVA 文件
Ubuntu.ova
并创建名为my-instance
的实例,请运行以下命令:gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/Ubuntu.ova
如果 OVF 描述符文件中的客户机操作系统信息不正确,或者您想要替换检测到的操作系统,则可以通过添加
--os
标志来指定操作系统。如需获取受支持值的列表,请查看gcloud compute instances import
命令的--os
标志选项。例如,如需导入 OVA 文件
Ubuntu.ova
并创建运行 Ubuntu 16.04 的名为my-instance
的实例,请运行以下命令:gcloud compute instances import my-instance \ --os=ubuntu-1604 --source-uri=gs://my-bucket/Ubuntu.ova
将虚拟设备上传至 Cloud Storage。
向 Cloud Build API 发送
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_URI", "-zone=ZONE", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
请替换以下内容:
PROJECT_ID
:要将 OVA 文件导入到其中的项目的项目 ID。VM_NAME
:要创建的虚拟机实例的名称,例如my-instance
。SOURCE_URI
:存储在 Cloud Storage 中的 OVA 文件的 URI,例如gs://my-bucket/my-instance.ova
。ZONE
:要在其中创建虚拟机实例的可用区。如果留空,则使用项目的默认可用区。
如需查看可提供的其他
args
值,请参阅 Compute Engine OVF 导入 GitHub 页面的可选标志部分。示例响应
以下示例响应类似于返回的输出:
{ "name": "operations/build/myproject-12345/operation-1578608233418", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": "3a2055bc-ccbd-4101-9434-d376b88b8940", "status": "QUEUED", "createTime": "2019-12-30T19:06:03.968694865Z", "steps": [ { "name": "gcr.io/compute-image-tools/gce_ovf_import:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-instance-names=my-instance", "-ovf-gcs-path=gs://my-bucket/my-instance.ova", "-zone=asia-northeast2", "-client-id=api", "-timeout": "7056s" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345", "tags": [ "gce-ovf-import" ] } } }
如需监控您的版本,您可以使用以下方法之一:
- 使用返回的
build-id
运行 projects.builds.get 请求。 - 查看在提供的
logUrl
下托管的日志。
- 将虚拟设备上传至 Cloud Storage。
如需将 OVF 文件从 Cloud Storage 导入到 Compute Engine,请使用
gcloud compute instances import
命令。如果您的目录只包含一个 OVF 文件,则您要么提供描述符文件的路径,要么提供包含 OVF 文件的目录的路径。
如需使用描述符文件的路径导入 OVF 文件,请运行以下命令:
gcloud compute instances import VM_NAME \ --source-uri=gs:PATH_TO_OVF_FILE
如需使用目录路径导入 OVF 文件,请运行以下命令:
gcloud compute instances import VM_NAME \ --source-uri=gs:PATH_TO_OVF_DIRECTORY
替换以下内容:
VM_NAME
:要创建的实例的名称PATH_TO_OVF_FILE
:Cloud Storage 上 OVF 文件的路径PATH_TO_OVF_DIRECTORY
:Cloud Storage 上包含 OVF 文件的目录的路径
示例
如需从
my-ovf-directory
目录中导入 OVF 文件Ubuntu.ovf
以创建名为my-instance
的实例,请运行以下命令:gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
如需从
my-ovf-directory
目录中导入 OVF 文件以创建名为my-instance
的实例,请运行以下命令:gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/my-ovf-directory
如果 OVF 描述符文件中的客户机操作系统信息不正确,或者您想要替换检测到的操作系统,则可以通过添加
--os
标志来指定操作系统。如需获取受支持值的列表,请查看gcloud compute instances import
命令的--os
标志选项。 例如,如需导入 OVF 文件Ubuntu.ovf
并创建运行 Ubuntu 16.04 的名为my-instance
的实例,请运行以下命令:gcloud compute instances import my-instance \ --os=ubuntu-1604 \ --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
将虚拟设备添加到 Cloud Storage。
向 Cloud Build API 发送
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_URI", "-os=OS", "-zone=ZONE", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
请替换以下内容:
PROJECT_ID
:要将 OVA 文件导入到其中的项目的项目 ID。VM_NAME
:要创建的虚拟机实例的名称,例如my-instance
。SOURCE_URI
:存储在 Cloud Storage 中的 OVF 文件的 URI,例如gs://my-bucket/my-instance.ovf
。OS
:OVF 文件的操作系统,例如ubuntu-1604
。默认情况下,--os
标志是可选的,但您可以使用此标志替换系统检测到的操作系统。如需获取受支持的值的列表,请查看gcloud compute instances import
命令的--os
标志选项。ZONE
:要在其中创建虚拟机实例的可用区。如果留空,则使用项目的默认可用区。
如需查看可提供的其他
args
值,请参阅 Compute Engine OVF 导入 GitHub 页面的可选标志部分。示例响应
以下示例响应类似于返回的输出:
{ "name": "operations/build/myproject-12345/operation-1578608233418", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": "3a2055bc-ccbd-4101-9434-d376b88b8940", "status": "QUEUED", "createTime": "2019-12-30T19:06:03.968694865Z", "steps": [ { "name": "gcr.io/compute-image-tools/gce_ovf_import:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-instance-names=my-instance", "-ovf-gcs-path=gs://my-bucket/my-instance.ovf", "-os=ubuntu-1404", "-zone=asia-south1", "-client-id=api", "-timeout": "7056s" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345", "tags": [ "gce-ovf-import" ] } } }
您可以通过以下几种方式监控您的版本:
- 使用返回的
build-id
运行 projects.builds.get 请求。 - 查看在提供的
logUrl
下托管的日志。
- 虚拟机名称:
my-instance
- 网络:
custom-vpc-network
- 子网:
company-vpc-us-east1-c
- 可用区:
us-east1-c
- 虚拟机名称:
my-instance-2
- 网络:
my-shared-vpc
- 子网:
my-shared-subnet
- 可用区:
us-east1-c
将
compute.networkUser
角色添加到 Cloud Build 服务账号:如需了解详情,请参阅向 Cloud Build 服务账号授予所需角色。导入虚拟机。
gcloud compute instances import my-instance-2 \ --source-uri gs://my-bucket/Ubuntu.ova \ --project SERVICE_PROJECT_ID \ --network projects/HOST_PROJECT_ID/global/networks/my-shared-vpc \ --subnet projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet --zone us-east1-c
替换以下内容:
SERVICE_PROJECT_ID
:要向其中导入虚拟设备的项目的 IDHOST_PROJECT_ID
:共享 VPC 所属项目的 ID
- 虚拟机名称:
my-instance
- 网络:
custom-vpc-network
- 子网:
company-vpc-us-east1-c
- 可用区:
us-east1-c
- 虚拟机名称:
my-instance-2
- 网络:
my-shared-vpc
- 子网:
my-shared-subnet
- 可用区:
us-east1-c
将
compute.networkUser
角色添加到 Cloud Build 服务账号:如需了解详情,请参阅向 Cloud Build 服务账号授予所需角色。创建以下
POST
请求以导入虚拟机。POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=my-instance-2", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-zone=us-east1-c", "-network=projects/HOST_PROJECT_ID/global/networks/my-shared-vpc", "-subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
替换以下内容:
SERVICE_PROJECT_ID
:要向其中导入虚拟设备的项目的 ID。HOST_PROJECT_ID
:共享 VPC 所属项目的 ID。
将虚拟设备添加到 Cloud Storage。
导入过程要求在虚拟机的操作系统上安装软件包管理器。这些软件包管理器可能需要对 Google Cloud 外部的软件包代码库发出请求。若要允许访问这些更新,您需要配置 Cloud NAT。如需了解详情,请参阅使用 Cloud Router 创建 NAT 配置。
配置专用 Google 访问通道。如需了解详细说明,请参阅配置专用 Google 访问通道。
使用 Google Cloud CLI 或 REST 导入虚拟机。
从虚拟设备创建虚拟机时,系统会在项目中创建临时虚拟机。为确保这些临时虚拟机未被分配外部 IP 地址,您必须指定其他标志或参数。
如需了解详情,请点击以下标签页:
VM_NAME
:要创建的实例的名称。SOURCE_URI
:Cloud Storage 上的 OVA 或 OVF 文件的 URI。例如gs://my-bucket/Ubuntu.ova
。ZONE
:要在其中创建虚拟设备的可用区。如果留空,则使用项目的默认可用区。PROJECT_ID
:要将映像导入到其中的项目的项目 ID。VM_NAME
:要创建的虚拟机的名称。SOURCE_FILE
:Cloud Storage 中映像的 URI,例如gs://my-bucket/Ubuntu.ova
。ZONE
:要在其中创建映像的可用区。如果留空,则使用项目的默认可用区。VM_NAME
:您要创建的虚拟机的名称。SOURCE_URI
:Cloud Storage 上的 OVA 或 OVF 文件的 URI。例如gs://my-bucket/Ubuntu.ova
。将虚拟设备上传至 Cloud Storage。
在 API 中,创建一个指向 Cloud Build API 的
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_URI", "-uefi-compatible", "-zone=ZONE", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
请替换以下内容:
PROJECT_ID
:要将 OVA 文件导入到其中的项目的项目 ID。VM_NAME
:要创建的虚拟机实例的名称,例如my-instance
。SOURCE_URI
:存储在 Cloud Storage 中的 OVA 文件的 URI,例如gs://my-bucket/my-instance.ova
。ZONE
:要在其中创建虚拟机实例的可用区。如果留空,则使用项目的默认可用区。
将虚拟设备添加到 Cloud Storage。
创建服务账号并分配最小角色。如需详细了解如何创建服务账号,请参阅创建和管理服务账号。
指定的 Compute Engine 服务账号必须至少具有以下角色:
roles/compute.storageAdmin
roles/storage.objectViewer
为
--compute-service-account
标志指定的服务账号至少需要这些角色。 如需了解详情,请参阅为 Compute Engine 服务账号授予所需角色。使用
gcloud compute instances import
命令导入虚拟设备。gcloud compute instances import VM_NAME \ --source-uri=SOURCE_URI \ --zone=ZONE \ --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPES
请替换以下内容:
VM_NAME
:要创建的实例的名称。SOURCE_URI
:Cloud Storage 上的 OVA 或 OVF 文件的 URI。例如gs://my-bucket/Ubuntu.ova
。ZONE
:要在其中创建虚拟设备的可用区。如果留空,则使用项目的默认可用区。TEMP_SERVICE_ACCOUNT_EMAIL
:与上一步中创建的自定义服务账号关联的电子邮件地址。此服务账号由临时虚拟机使用。如果未指定,则虚拟机会使用默认的 Compute Engine 服务账号。SERVICE_ACCOUNT_EMAIL
:与要附加到导入过程创建的虚拟机的自定义服务账号关联的电子邮件地址。此服务账号没有权限限制,您可以根据需要对其进行自定义。如果未指定,则默认的 Compute Engine 服务账号会挂接到该虚拟机。SCOPES
:指定--service-account
选项的访问权限级别。如果未指定,则使用默认范围。有关详情,请查看--scopes
标志。
将虚拟设备添加到 Cloud Storage。
创建服务账号并分配最小角色。如需详细了解如何创建服务账号,请参阅创建和管理服务账号。
指定的 Compute Engine 服务账号必须至少具有以下角色:
roles/compute.storageAdmin
roles/storage.objectViewer
为
-compute-service-account
参数指定的服务账号至少需要这些角色。如需了解详情,请参阅为 Compute Engine 服务账号授予所需角色。在 API 中,创建一个指向 Cloud Build API 的
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_FILE", "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL", "-service-account=SERVICE_ACCOUNT_EMAIL", "-zone=ZONE", "-scopes=SCOPES", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
请替换以下内容:
PROJECT_ID
:要将映像导入到其中的项目的项目 ID。VM_NAME
:要创建的虚拟机的名称。SOURCE_FILE
:Cloud Storage 中映像的 URI,例如gs://my-bucket/Ubuntu.ova
。ZONE
:要在其中创建映像的可用区。如果留空,则使用项目的默认可用区。TEMP_SERVICE_ACCOUNT_EMAIL
:与上一步中创建的自定义服务账号关联的电子邮件地址。此服务账号由临时虚拟机使用。如果未指定,则虚拟机会使用默认的 Compute Engine 服务账号。SERVICE_ACCOUNT_EMAIL
:与要附加到导入过程创建的虚拟机的自定义服务账号关联的电子邮件地址。此服务账号没有权限限制,您可以根据需要对其进行自定义。如果未指定,则默认的 Compute Engine 服务账号会挂接到该虚拟机。SCOPES
:指定-service-account
选项的访问权限级别。如果未指定,则使用默认范围。有关详情,请查看--scopes
标志。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
要求
本部分列出了将虚拟设备导入 Compute Engine 的要求。
源虚拟机要求
用于创建 OVF 文件的虚拟机必须满足以下要求:
源虚拟机的操作系统应满足以下要求:
OVF 文件要求
OVF 文件必须满足以下要求:
权限
如需在导入映像时启用无缝体验,请确保您已向您的账号、Cloud Build 服务账号和 Compute Engine 服务账号授予所需的 IAM 角色。如需了解详情,请参阅授予所需的 IAM 角色。
通过导入工具导入的配置
OVF 标准以不依赖虚拟化提供程序的方式指定打包虚拟设备的过程。OVF 虚拟设备软件包包含一个
.ovf
描述符文件和一组其他资源(例如虚拟磁盘)。将 OVF 虚拟设备导入 Compute Engine 时,系统会处理并导入描述符文件中的以下配置:
始终使用具有外部 IP 地址的单一网络适配器创建导入的虚拟机。无论 OVF 文件中指定什么样的网络配置,都使用此单一网络适配器。如需导入没有外部 IP 地址的虚拟机,请参阅导入没有外部 IP 地址的虚拟机。
导入虚拟设备时,忽略(不导入)描述符文件的以下部分:
限制
对于受 VPC Service Controls 保护的项目,不支持此功能。
支持的操作系统
您可以选择在描述符文件 的
OperatingSystemSection
元素中指定操作系统,或在使用gcloud compute instances import
命令时指定--os
标志。如需了解哪些操作系统受支持,请参阅操作系统详细信息。
支持 BYOL 和 BYOS
默认情况下,系统会导入使用 Windows Server 和 Red Hat Enterprise Linux (RHEL) 操作系统的 OVF 文件,并将其配置为使用付费操作系统的按需结算方式,这可能会产生额外费用。
如果您希望使用自己的软件许可或订阅,则可以导入虚拟设备及其许可。如需了解支持 BYOL 或 BYOS 的操作系统,请参阅操作系统详细信息。
您可以使用带有
--byol
标志的gcloud compute instances import
命令,从而将设备作为自带许可 (BYOL) 的设备导入。如果您要手动指定操作系统,请使用--os
标志指定一个值,在其中包含要导入的客户机操作系统的byol
后缀。例如,--os=rhel-8-byol
会导入具备现有许可的 RHEL 8 映像。跨项目导入
如果源项目和目标项目不同,则目标项目中的服务账号需要对源项目中 Cloud Storage 存储分区的访问权限。
如需进行跨项目导入,请完成以下步骤:
导入虚拟设备
您可以使用 Google Cloud CLI 或 REST 来导入虚拟设备。
导入 OVA 文件
gcloud
REST
导入 OVF 文件
gcloud
REST
使用自定义设置导入
自定义 CPU 和内存
gcloud
如需替换在 OVF 文件中指定的 CPU 或内存配置,请按照 Google Cloud CLI 步骤导入一个 OVA 文件或导入一个 OVF 文件,并指定
--custom-cpu
和--custom-memory
标志。示例
例如,如需导入名为
my-instance
的实例(具有 2 个 CPU 和 2048 MB 内存),请运行以下命令:gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/Ubuntu.ova \ --custom-cpu=2 --custom-memory=2048MB
REST
如需替换在 OVF 文件中指定的 CPU 或内存配置,请按照 Cloud Build API 步骤导入一个 OVA 或导入一个 OVF 文件并指定
-machine-type
参数。此-machine-type
表示要使用的预定义或自定义机器类型。示例
例如,如需导入名为
my-instance
的实例(具有 2 个 CPU 和 2048 MB 内存),请使用以下请求。请将PROJECT_ID
替换为您的项目 ID。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=my-instance", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-machine-type=custom-2-2048", "-zone=asia-south1", "-client-id=api", "-timeout=7056s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
自定义网络
自定义网络必须在要将映像导入到其中的项目中定义。
gcloud
如需使用自定义网络,请按照 Google Cloud CLI 步骤导入一个 OVA 文件或导入一个 OVF 文件,并指定
--network
标志。如果该网络配置了自定义子网模式,您还必须指定--subnet
和--zone
标志。示例 1 - 使用自定义网络
例如,假设有以下属性:
运行以下命令以导入具有上述属性的实例。将
SERVICE_PROJECT_ID
替换为要向其中导入虚拟设备的项目的 ID。gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/Ubuntu.ova \ --project SERVICE_PROJECT_ID \ --network custom-vpc-network \ --subnet company-vpc-us-east1-c \ --zone us-east1-c
示例 2 - 使用自定义网络(共享 VPC)
例如,假设有以下属性:
如需导入具有上述属性的虚拟机,请完成以下步骤:
REST
如需使用自定义网络,请按照 Cloud Build API 步骤导入一个 OVA 或导入一个 OVF 文件并指定
-network
参数。如果该网络配置了自定义子网模式,您还必须指定-subnet
和-zone
参数。示例 - 使用自定义网络
例如,假设有以下属性:
创建以下
POST
请求以导入具有上述属性的实例。将SERVICE_PROJECT_ID
替换为要向其中导入虚拟设备的项目的 ID。POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=my-instance", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-zone=us-east1-c", "-network=custom-vpc-network", "-subnet=company-vpc-us-east1-c", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
示例 2 - 使用自定义网络(共享 VPC)
例如,假设有以下属性:
如需导入具有上述属性的虚拟机,请完成以下步骤:
使用不允许外部 IP 地址的网络来导入虚拟机
如需使用不允许外部 IP 地址的网络导入虚拟机,请完成以下步骤:
gcloud
如需将虚拟设备从 Cloud Storage 导入到 Compute Engine,请使用带有
--no-address
标志的gcloud compute instances import
命令。gcloud compute instances import VM_NAME \ --source-uri=SOURCE_URI \ --zone=ZONE \ --no-address
请替换以下内容:
REST
您可以使用 Cloud Build API 并替换外部 IP 地址,从而导入没有外部 IP 地址的虚拟机。
如需替换在 OVF 文件中指定的外部 IP 地址设置,请按照 Cloud Build API 步骤导入一个 OVA 或导入一个 OVF 文件并指定
-no-external-ip
参数。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_FILE", "-no-external-ip", "-zone=ZONE", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
请替换以下内容:
使用 UEFI 引导加载程序来导入 OVA 文件
gcloud
您可以使用
gcloud compute instances import
命令强制执行导入以使用 UEFI 启动。gcloud compute instances import VM_NAME \ --source-uri=SOURCE_URI \ --guest-os-features=UEFI_COMPATIBLE
替换以下内容:
REST
您可以使用 Cloud Build API 并指定
-uefi-compatible
参数,导入带有 UEFI 引导加载程序的 OVA 文件。使用自定义服务账号导入虚拟设备
在虚拟设备导入期间,系统会在您的项目中创建临时虚拟机 (VM)。这些临时虚拟机上的导入工具必须经过身份验证。
服务账号是关联到虚拟机的身份。服务账号访问令牌可通过实例元数据服务器访问,用于对虚拟机上的导入工具进行身份验证。
默认情况下,导入过程使用默认 Compute Engine 服务账号。但是,如果您在项目中停用了默认 Compute Engine 服务账号,或者如果要使用自定义 Compute Engine 服务账号,则需要创建一个服务账号并针对导入过程指定该账号。
gcloud
REST
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-11-22。
-