我在我的开发者控制台中有两个项目。我已经在项目1中的一个虚拟机上创建了一个“快照”。我想使用在项目1中创建的快照来在项目2中创建一个新的虚拟机。现在选项中没有显示快照。 我该如何将一个项目中的快照导入到另一个项目中?
我在我的开发者控制台中有两个项目。我已经在项目1中的一个虚拟机上创建了一个“快照”。我想使用在项目1中创建的快照来在项目2中创建一个新的虚拟机。现在选项中没有显示快照。 我该如何将一个项目中的快照导入到另一个项目中?
https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image
使用gcloud在项目2中创建一个实例,使用项目1中的镜像:gcloud config set project <project-id-of-project-2>
gcloud config list
(您应该验证您是否在项目2中)
gcloud compute instances create <name of instance> --image https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image
显然,您的网址将不同。
我刚刚测试了这个方法,它有效。如果您需要更多帮助,请告诉我。
你不需要一个镜像或者一个虚拟机,也不用打断源虚拟机。只需要在源项目中创建一个快照:
$ gcloud compute --project p1 disks snapshot the-snapshot src-disk --snapshot-names=the-snapshot
Created [https://compute.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot].
然后在目标项目中创建一个磁盘,使用--source-snapshot
参数指向上面返回的“Created”URL:
$ gcloud compute --project p2 disks create the-disk \
--source-snapshot https://compute.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot
这种用法没有在gcloud
文档中显示,我是在@krishna praveen的答案中找到的,但他的解释是不正确的;你不需要删除任何实例或使用映像。即使源和目标都是启动磁盘,这也可以正常工作:
$ gcloud compute --project p2 instances create the-vm --disk name=the-disk,boot=yes
如果由于某些原因您需要图像,则仍然可以将快照还原到磁盘并使用其来创建图像,而无需使用零时虚拟机。 如果零时虚拟机在引导时会自动启动服务,并可能干扰同一项目网络上正在运行的其他虚拟机,则此方法更可取。
$ gcloud compute images create image-1 --source-disk=src-disk-image --source-disk-zone=zone1
这张图片现在可以从另一个项目中使用(如上所示@ jiminikiz)。
$ gcloud compute --project p2 instances create <name-of-new-instance> --image image-1 \
--image-project p1 --zone=zone
@chrispomeroy发布的答案对我有用,但我能够简化它,因为我需要越来越多地这样做。
假设您在 项目-1 中有一个图像,并且需要使用该图像创建一个实例在项目-2中。
gcloud config set project "project-2"
gcloud compute instances create <name-of-new-instance> \
--image <name-of-your-image-from-project-1> \
--image-project "project-1"
这消除了对于任何事情都使用 URL
的担忧。
编辑: 目前我的答案基本上与他的相同,但关于此内容的文档在这里:
这是一个只需通过浏览器点击操作的解决方案。您需要什么? 您需要图片。要从磁盘创建镜像,必须将磁盘与任何实例分离。
如果您只有Project1中的实例,以下是步骤:
从Project1中的实例创建快照。
从此快照中在Project1中创建实例。取消选中“删除实例时删除启动磁盘”。此实例仅用于现在并将被删除。
删除您刚刚创建的实例。
转到“磁盘”菜单,您必须在那里看到实例的磁盘。
转到“映像”菜单->“创建图像”。在这里,您可以创建图像。如果您没有分离的磁盘,则在下拉列表中不会有任何磁盘可用。
进入Project 2,并使用为Project 1创建的自定义图像创建实例。如何操作? 启动磁盘 -> 更改 -> 自定义图像 -> 选择 Project 1 -> 您可以在此处看到您的自定义图像。
"chrispomeroy"提供的解决方案很好,但需要首先使用个人Google用户帐户(而不是project2服务帐户)初始化gcloud(因为它是具有访问两个项目权限的帐户):
gcloud init(并选择[2]使用新凭据登录)
然后,您确实可以使用以下命令在项目1上的基础映像上创建项目2上的VM:
gcloud compute instances create testimg --image --image-project (无需URL) 我今天测试了一下(2015年11月),效果很好。
可以使用映像在整个项目中创建实例。现在,如果您在项目1中有一个映像,也可以在项目2中选择该映像。
但是,截至今天,您无法在整个项目中查看磁盘。如果您需要将带有关联附加磁盘的VM从项目1迁移到项目2,请按照以下步骤操作。
使用快照并通过连接gcloud
命令接口在项目2中创建磁盘。连接到项目2,然后执行:
gcloud compute --project "GCPProject2" disks create "myserver-disk1" --size "50" --zone "us-east1-b" --source-snapshot https://www.googleapis.com/compute/v1/projects/GCPProject1/global/snapshots/snapshot-myserver-disk1 --description "DriveName" --type "pd-standard"
以上步骤将在项目2中创建磁盘。然后您需要保留引导磁盘的情况下删除项目1中的实例。然后,从磁盘myserver-bootdisk
创建映像。
创建映像后,切换到项目2,然后从项目1中选择映像,使用下拉菜单创建服务器。
添加您从快照创建的附加磁盘并创建虚拟机。
新建实例
时,您只需从镜像列表中选择该机器即可。
ERROR: (gcloud.compute.instances.create) could not parse resource: [https://www.googleapis.com/compute/beta/projects/<project-1-ID>/global/images/<image-name>
。您有任何想法为什么我会得到这个错误吗?谢谢! - jonny bordo