使用 Python API 创建 GCE 实例

Create GCE instance using Python API

我想使用 Python api 创建一个 Google Compute Engine 实例。特别是,我希望源图像为 Ubuntu 14.04.

在doc中是这样写的指定请求的json正文:

{
  "name": "example-instance",
  "machineType": "zones/us-central1-f/machineTypes/f1-micro"
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT"
     }],
    "network": "global/networks/default"
  }],
  "disks": [{
     "autoDelete": "true",
     "boot": "true",
     "type": "PERSISTENT",
     "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/v20150818"
     }
   }]
}

如何修改 sourceImage 参数值使其指向 ubuntu 14.04 图像?事实上,语法 "projects/debian-cloud/global/images/v20150818" 太具体了,无法理解如何将它用于其他 public 图像。

我猜你指的是 these docs (source code),它使用以下 URL 格式:

"projects/debian-cloud/global/images/debian-7-wheezy-v20150320"

这里的模式是:

"projects/${PROJECT}/global/images/${IMAGE}"

您可以通过以下方式找到可用的图像:

$ gcloud compute images list

这将显示类似于以下内容的输出:

NAME                                PROJECT            ALIAS              DEPRECATED STATUS
centos-6-v20151104                  centos-cloud       centos-6                      READY
centos-7-v20151104                  centos-cloud       centos-7                      READY
coreos-alpha-891-0-0-v20151211      coreos-cloud                                     READY
coreos-beta-877-1-0-v20151202       coreos-cloud                                     READY
coreos-stable-835-9-0-v20151208     coreos-cloud       coreos                        READY
backports-debian-7-wheezy-v20151104 debian-cloud       debian-7-backports            READY
debian-7-wheezy-v20151104           debian-cloud       debian-7                      READY
debian-8-jessie-v20151104           debian-cloud       debian-8                      READY
container-vm-v20151103              google-containers  container-vm                  READY
opensuse-13-1-v20150822             opensuse-cloud     opensuse-13                   READY
opensuse-13-2-v20150511             opensuse-cloud     opensuse-13                   READY
opensuse-leap-42-1-v20151124        opensuse-cloud                                   READY
rhel-6-v20151104                    rhel-cloud         rhel-6                        READY
rhel-7-v20151104                    rhel-cloud         rhel-7                        READY
sles-11-sp4-v20150714               suse-cloud         sles-11                       READY
sles-12-sp1-v20151215               suse-cloud         sles-12                       READY
ubuntu-1204-precise-v20151119       ubuntu-os-cloud    ubuntu-12-04                  READY
ubuntu-1404-trusty-v20151113        ubuntu-os-cloud    ubuntu-14-04                  READY
ubuntu-1504-vivid-v20151120         ubuntu-os-cloud    ubuntu-15-04                  READY
ubuntu-1510-wily-v20151114          ubuntu-os-cloud                                  READY
windows-server-2008-r2-dc-v20151006 windows-cloud      windows-2008-r2               READY
windows-server-2012-r2-dc-v20151006 windows-cloud      windows-2012-r2               READY

所以在 Ubuntu 14.04 的情况下,图像路径将是:

"projects/ubuntu-os-cloud/global/images/ubuntu-1404-trusty-v20151113"

您还可以通过以下方式找到有关图像的更多元数据:

$ gcloud compute images describe --project ubuntu-os-cloud ubuntu-1404-trusty-20151113

和输出中的 selfLink 属性将为图像提供完整的 URL。