使用机器映像可以存储 Compute Engine 上运行的虚拟机实例的一个或多个磁盘的所有配置、元数据、权限和数据。如需了解何时以及如何使用机器映像,请参阅机器映像。
本文档介绍了从虚拟设备导入机器映像的步骤。
准备工作
- 如果要在其中导入机器映像的项目定义了可信映像政策,请将
projects/compute-image-import
和projects/compute-image-tools
添加到允许的发布者列表中。 - 如果您要从其他项目导入虚拟设备,请参阅跨项目导入。
- 查看导入虚拟设备 Compute Engine 指南中的来源虚拟机和 OVF 文件要求。
- 如需了解如何满足导入映像机器的要求,请参阅导入和导出虚拟机映像的前提条件。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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.
- 您可以跨项目共享机器映像。不过,共享 VPC 网络不受支持。
- 对于受 VPC Service Controls 保护的项目,不支持此功能。
- 无法通过挂接的磁盘超过 200 TB 的来源虚拟机创建机器映像。
MACHINE_IMAGE_NAME
:您要导入的机器映像的名称。SOURCE_URI
:Cloud Storage 上的 OVA 或 OVF 文件的路径。OS
:OVA 文件的操作系统,默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。将虚拟设备上传至 Cloud Storage。
向 Cloud Build API 发送
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-machine-image-name=MACHINE_IMAGE_NAME", "-ovf-gcs-path=SOURCE_URI", "-os=OS", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
请替换以下内容:
PROJECT_ID
:要将 OVA 文件导入的项目的 ID。MACHINE_IMAGE_NAME
:要导入的机器映像的名称。例如my-machine-image
。SOURCE_URI
:OVA 文件的 URI 或包含存储在 Cloud Storage 中的 OVF 软件包的目录。例如gs://my-bucket/my-instance.ova
。OS
:OVA 文件的操作系统,例如ubuntu-1604
。默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。
如需查看可提供的其他
args
值,请参阅 Compute Engine OVF 导入 GitHub 页面的可选标志部分。- 操作系统:
Ubuntu 1404
- CPU:
2 CPUs
- 内存:
2048 MB
- 操作系统:
Ubuntu 1404
- CPU:
2 CPUs
- 内存:
2048 MB
- 操作系统:
Ubuntu 1404
- 网络:
custom-vpc-network
- 子网:
company-vpc-us-east1-c
- 可用区:
us-east1-c
- 操作系统:
Ubuntu 1404
- 网络:
custom-vpc-network
- 子网:
company-vpc-us-east1-c
- 可用区:
us-central1-c
将虚拟设备添加到 Cloud Storage。
导入过程要求在机器映像的操作系统上安装软件包管理器。这些软件包管理器可能需要对 Google Cloud 外部的软件包代码库发出请求。若要允许访问这些更新,您需要配置 Cloud NAT。如需了解详情,请参阅使用 Cloud Router 创建 NAT 配置。
配置专用 Google 访问通道。有关了解详情,请参阅配置专用 Google 访问通道。
使用 Google Cloud CLI 或 Cloud Build API 导入机器映像。
从虚拟设备导入机器映像时,系统会在您的项目中创建临时虚拟机。为确保这些临时虚拟机未被分配外部 IP 地址,您必须指定其他标志或参数。
如需详细了解必需的标志或参数,请点击以下标签页:
PROJECT_ID
:要将机器映像导入的项目的 ID。MACHINE_IMAGE_NAME
:要导入的机器映像的名称。例如my-machine-image
。SOURCE_URI
:存储在 Cloud Storage 中的 OVA 文件的 URI,例如gs://my-bucket/my-machine.ova
。OS
:OVA 文件的操作系统,例如ubuntu-1604
。默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。 如需查看受支持的值列表,请参阅gcloud compute instances import
命令的--os
标志选项。ZONE
:要导入机器映像的可用区。将虚拟设备添加到 Cloud Storage。
创建服务账号并分配最小角色。如需详细了解如何创建服务账号,请参阅创建和管理服务账号。
指定的 Compute Engine 服务账号必须至少具有以下角色:
roles/compute.storageAdmin
roles/storage.objectViewer
为
--compute-service-account
标志指定的服务账号至少需要这些角色。 如需了解详情,请参阅为 Compute Engine 服务账号授予所需角色。使用
gcloud compute machine-images import
命令从虚拟设备导入机器映像。gcloud compute machine-images import MACHINE_IMAGE_NAME \ --source-uri=gs:SOURCE_URI \ --os=OS \ --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPES
请替换以下内容:
MACHINE_IMAGE_NAME
:您要导入的机器映像的名称。SOURCE_URI
:Cloud Storage 上的 OVA 或 OVF 文件的路径。OS
:OVA 文件的操作系统,默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。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 服务账号授予所需角色。向 Cloud Build API 发送
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-machine-image-name=MACHINE_IMAGE_NAME", "-ovf-gcs-path=SOURCE_URI", "-os=OS", "-zone=ZONE", "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL", "-service-account=SERVICE_ACCOUNT_EMAIL", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
请替换以下内容:
PROJECT_ID
:要将机器映像导入的项目的 ID。MACHINE_IMAGE_NAME
:要导入的机器映像的名称。例如my-machine-image
。SOURCE_URI
:存储在 Cloud Storage 中的 OVA 文件的 URI,例如gs://my-bucket/my-machine.ova
。OS
:OVA 文件的操作系统,例如ubuntu-1604
。默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。 如需查看受支持的值列表,请参阅gcloud compute instances import
命令的--os
标志选项。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 时进行身份验证。
局限和限制
支持的操作系统
如需获取操作系统支持,请参阅操作系统详细信息。
导入机器映像
您可以使用 Google Cloud CLI 或 REST 从虚拟设备导入机器映像。
gcloud
使用
gcloud compute machine-images import
命令可通过虚拟设备导入机器映像。gcloud compute machine-images import MACHINE_IMAGE_NAME \ --source-uri=gs:SOURCE_URI \ --os=OS
请替换以下内容:
示例
例如,您可以使用以下
gcloud
命令从名为my-ova
的源 OVA 文件中导入一个名为my-machine-image
的机器映像,该文件存储在gs://my-bucket
目录中并且运行centos-7
:gcloud compute machine-images import my-machine-image \ --source-uri=gs://my-bucket/my-ova/ \ --os=centos-7
REST
通过替换 OVF 文件中的设置来导入机器映像
自定义 CPU 和内存
gcloud
如需替换 OVF 文件中指定的 CPU 或内存配置,请按照 Google Cloud CLI 步骤导入机器映像并指定
--custom-cpu
和--custom-memory
标志。示例
一个名为
my-machine-image
的机器映像对 OVF 文件中的设置应用了以下替换:如需导入包含这些替换内容的
my-machine-image
,请运行以下命令:gcloud compute machine-images import my-machine-image \ --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \ --custom-cpu=2 --custom-memory=2048MB
REST
如需替换在 OVF 文件中指定的 CPU 或内存配置,请按照 Compute Engine API 步骤导入机器映像并指定
-machine-type
参数。此-machine-type
表示要使用的预定义或自定义机器类型。示例
一个名为
my-machine-image
的机器映像对 OVF 文件中的设置应用了以下替换:如需导入包含这些替换内容的
my-machine-image
,请向 Compute Engine API 发出以下请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-machine-image-name=my-machine-image", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-os=ubuntu-1404", "-machine-type=custom-2-2048", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
将
PROJECT_ID
替换为您的项目 ID。自定义网络
gcloud
如需设置自定义网络,请按照 Google Cloud CLI 步骤导入机器映像并指定
--network
标志。如果该网络配置了自定义子网模式,您还必须指定--subnet
和--zone
标志。示例
一个名为
my-machine-image
的机器映像对 OVF 文件中的设置应用了以下替换:如需导入包含这些替换内容的
my-machine-image
,请运行以下示例命令:gcloud compute machine-images import my-machine-image \ --os=ubuntu-1404 \ --source-uri=gs://my-bucket/Ubuntu.ova \ --network=custom-vpc-network \ --subnet=company-vpc-us-east1-c \ --zone=us-east1-c
REST
如需使用自定义网络,请按照 Compute Engine API 步骤导入机器映像,并指定
-network
参数。如果该网络配置了自定义子网模式,您还必须指定-subnet
和-zone
参数。示例
一个名为
my-machine-image
的机器映像对 OVF 文件中的设置应用了以下替换:如需导入包含这些替换内容的
my-machine-image
,请向 Compute Engine API 发出以下请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-machine-image-name=my-machine-image", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-os=ubuntu-1404", "-zone=us-central1-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=$BUsILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
将
PROJECT_ID
替换为您的项目 ID。在不允许外部 IP 地址的网络内导入机器映像
如需使用不允许外部 IP 地址的网络导入机器映像,请完成以下步骤:
gcloud
使用带有
--no-address
标志的gcloud compute machine-images import
命令。gcloud compute machine-images import MACHINE_IMAGE_NAME \ --source-uri=SOURCE_URI \ --os=OS \ --zone=ZONE \ --no-address
请替换以下内容:
REST
使用 Cloud Build API,并指定
-no-external-ip
参数。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-machine-image-name=MACHINE_IMAGE_NAME", "-ovf-gcs-path=SOURCE_URI", "-os=OS", "-zone=ZONE", "-no-external-ip", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
请替换以下内容:
使用自定义服务账号导入机器映像
在机器映像导入过程中,系统会在您的项目中创建临时虚拟机 (VM) 实例。这些临时虚拟机上的导入工具必须经过身份验证。
服务账号是关联到虚拟机的身份。服务账号访问令牌可通过虚拟机元数据服务器访问,用于对虚拟机上的导入工具进行身份验证。
默认情况下,导入过程使用默认 Compute Engine 服务账号。但是,如果您在项目中停用了默认 Compute Engine 服务账号,或者如果要使用自定义 Compute Engine 服务账号,则需要创建一个服务账号并针对导入过程指定该账号。
gcloud
REST
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-10-04。
-