Cloud 谷歌计算引擎:使用另一个项目的快照?

Cloud 谷歌计算引擎:使用另一个项目的快照?,cloud,google-compute-engine,google-cloud-platform,Cloud,Google Compute Engine,Google Cloud Platform,我的开发者控制台中有两个项目。我已经拍摄了project-1中一个虚拟机的“快照”。我想使用在project-1中创建的快照在project-2中创建一个新VM。现在快照未显示在选项中。 如何将快照从一个项目导入到另一个项目?好的,这是不可能的。要完成你所描述的,最好的方法是使用。您有几个步骤可以创建一个空白磁盘,将其连接到有问题的机器,对启动分区进行tarball,并将其上载到云存储。完成后,在本地下载,切换项目并上传到另一个项目。然后,当单击“新建实例”时,您可以从映像列表中选择机器。您可以

我的开发者控制台中有两个项目。我已经拍摄了project-1中一个虚拟机的“快照”。我想使用在project-1中创建的快照在project-2中创建一个新VM。现在快照未显示在选项中。
如何将快照从一个项目导入到另一个项目?

好的,这是不可能的。要完成你所描述的,最好的方法是使用。您有几个步骤可以创建一个空白磁盘,将其连接到有问题的机器,对启动分区进行tarball,并将其上载到云存储。完成后,在本地下载,切换项目并上传到另一个项目。然后,当单击“新建实例”时,您可以从映像列表中选择机器。您可以从管理单元项目1创建映像,然后使用项目2从该映像创建实例

我假设您在这两个项目中都有编辑权限

您的问题是,您有一个快照,希望在项目2中从管理单元项目1生成一个实例

如果快照的磁盘仍然可用,请确保它不再连接到实例。如果它仍然连接到实例,请取消选中“删除实例时删除启动盘”并删除该实例。转到“映像”,单击“从磁盘创建映像”,然后从此磁盘创建映像

如果没有可用磁盘,只有快照,请创建一个实例,将启动磁盘设置为快照,然后选择快照。然后按照上面的说明通过先删除实例来创建图像

现在您在项目1中有了一个图像。您应该看到它列在“图像”下

我不知道为什么,但您不会看到project 2中控制台中列出的映像,但是您可以使用gcloud在project 2中使用project 1中的映像创建实例。在项目1中,单击图像并单击“查看REST”,图像将有一个完整的URL,如下所示:

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
gcloud配置集项目
gcloud配置列表
(您应该验证您是否在项目2中)

gcloud计算实例创建--imagehttps://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image
显然,你的URL会有所不同

我刚刚测试了这个,它是有效的。如果您需要更多帮助,请告诉我。

由“chrispomeroy”提供的解决方案工作正常,但需要首先使用您的个人google用户帐户(而不是project2服务帐户)初始化gcloud(因为该帐户具有访问这两个项目的权限):

gcloud init(并选择[2]使用新凭据登录)

然后,您确实可以使用以下方法在项目2上创建VM(从项目1上的基本映像):

gcloud计算实例创建testimg--image--image项目(不需要URL) 我今天(2015年11月)进行了测试,效果良好


@chrispomeroy发布的答案对我来说很有用,但我能够简化它一点,因为我需要越来越多地这样做

假设您在project-1中有一个图像,并且需要在project-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"
gcloud配置集项目“project-2”
gcloud计算实例创建\
--形象\
--图像项目“项目-1”
这样就无需担心使用
URL
进行任何操作

编辑:在这一点上,我的答案与他的答案非常相似,但这方面的文档如下:


可以使用图像在整个项目中创建实例。现在,如果在项目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"
    
  • 上面将在Project2中创建磁盘。然后,您需要通过保留启动磁盘来删除Project1中的实例。 然后,从磁盘
    myserver bootdisk
    创建映像。 创建映像后,切换到项目2,然后从映像创建服务器,使用下拉列表并从项目1中选择映像

  • 添加从快照中装箱的附加磁盘并创建VM


  • 这是通过浏览器单击的唯一解决方案。您需要什么? 你需要有形象。要从磁盘创建映像,必须将磁盘与任何实例分离

    如果您在Project1中只有一个实例,那么步骤是什么:

    • 从Project1中的实例创建快照

    • 在Project1中从此快照创建实例。取消勾选“删除启动” “删除实例时的磁盘”。此实例仅用于
      现在就要删除了

    • 删除刚创建的实例

    • 转到“磁盘”菜单,您必须在那里看到 例如

    • 转到“图像”菜单->“创建图像”。在这里您可以创建图像。如果没有分离的磁盘,则不会有任何磁盘 可在下拉列表中找到

    • 转到项目2,使用为项目1创建的自定义映像创建实例。怎么用?启动磁盘->更改->自定义 图像->选择项目1->在这里可以看到您的自定义图像


      • 您不需要映像或临时虚拟机,也不必中断源虚拟机。只需在源项目中创建快照:

        $ gcloud compute --project p1 disks snapshot the-snapshot src-disk --snapshot-names=the-snapshot
        Created [https://www.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://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot
        
        这个用法没有显示在
        gcloud
        中,我在
        $ gcloud compute --project p2 disks create the-disk \
            --source-snapshot https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot
        
        $ 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
        
        $ gcloud compute --project p2 instances create <name-of-new-instance> --image image-1 \
            --image-project p1 --zone=zone