使用 gcloud 或 API 创建部署

本页面介绍了如何创建部署。部署是指对配置中定义的一组资源进行实例化。您需要在请求中提供有效配置以创建部署。部署可以包含各种 Google Cloud 服务中的大量资源。创建部署时,Deployment Manager 会在相应的 Google Cloud API 中创建所有描述的资源。

准备工作

创建部署

创建部署时,您将创建包含一组资源的部署资源。您应在请求提供的配置中明确定义每个资源。

gcloud

在 Google Cloud CLI 中,使用 deployments create 命令:

gcloud deployment-manager deployments create my-first-deployment \
    --config vm.yaml

--config 标志是 YAML 配置文件的相对路径。

在默认情况下,如果您的配置包含项目中已有的资源,这些资源将被部署获取,并可使用部署进行管理。如果您不想获取资源,则必须使用 --create-policy 选项,如下面的 gcloud beta 命令所示:

gcloud beta deployment-manager deployments create my-first-deployment \
    --config vm.yaml --create-policy CREATE

如需了解在创建部署时可以使用哪些政策,请参阅设置用于创建资源的政策

如果您已成功创建部署,可以获取部署说明:

gcloud deployment-manager deployments describe my-first-deployment

API

在 API 中,在请求正文中使用内嵌的配置发出 insert() 请求。

POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments

{
 "name": "example-config-with-templates",
 "target": {
  "config": {
   "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default\n"
  }
 }
}

如果导入模板,还必须在请求正文中提供这些模板。例如,以下 API 请求具有导入一个名为 target 的模板的 vm_template.jinja

POST https://www-www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments

{
 "name": "my-example-config-with-templates-2",
 "target": {
  "config": {
    "content": "imports:\n- path: vm_template.jinja\n\nresources:\n- name: my-vm\n  type: vm_template.jinja"
  },
  "imports": [
   {
    "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
    "name": "vm_template.jinja"
   }
  ]
 }
}

设置用于创建资源的政策

创建新部署时,如果项目中已存在要创建的资源,部署将获取该资源。在这种情况下,Deployment Manager 不会创建新资源。如果您不想获取现有资源,则必须使用 CREATE 政策进行部署。

您可以使用以下政策来创建资源:

  • CREATE_OR_ACQUIRE - [默认] Deployment Manager 可获取项目中已存在的资源,或者创建资源(如果资源不存在)。为了获取资源,Deployment Manager 会检查您尝试创建的资源的属性的配置。如果存在具有相同属性的现有资源,Deployment Manager 将在部署过程中获取该资源。

    Deployment Manager 检查的属性取决于您正在创建的资源类型,可能包括以下属性:

    • 资源的 name
    • 资源的 type
    • 资源的 zoneregion(如适用)

    这些属性是资源 GET API 请求的网址的一部分。要查看 Deployment Manager 用于获取资源的属性,请参阅资源的 GET 方法的 API 文档。例如,对于 Compute Engine 实例,instances.get 方法的请求网址包括 resourceId(配置中的 name)、zoneproject

  • CREATE - Deployment Manager 创建新的资源。如果配置中的任何资源已存在于项目中,部署就会失败。

  • ACQUIRE - Deployment Manager 使用与 CREATE_OR_ACQUIRE 相同的条件获取已存在的资源。

    如果项目中已经有许多资源,并且您希望将它们作为单个部署一起管理,请使用 ACQUIRE 政策。

    您必须在模板或配置中为这些资源提供必要属性,就像在创建它们一样。如果项目中不存在配置中的任何资源,部署将失败。

列出部署

Google Cloud 控制台、API 或 Google Cloud CLI 中查看部署列表。

控制台

前往 Google Cloud 控制台中的部署页面。

gcloud

在 Google Cloud CLI 中,使用 deployments list 子命令:

gcloud deployment-manager deployments list

API

在 API 中,向部署集合发出空的 GET 请求:

GET https://www.googleapis.com/deploymentmanager/v2beta1/projects/myproject/global/deployments

后续步骤