本页面介绍了如何创建部署。部署是指对配置中定义的一组资源进行实例化。您需要在请求中提供有效配置以创建部署。部署可以包含各种 Google Cloud 服务中的大量资源。创建部署时,Deployment Manager 会在相应的 Google Cloud API 中创建所有描述的资源。
准备工作
- 如果要使用本指南中的命令行示例,请安装 “gcloud” 命令行工具。
- 如果希望使用本指南中的 API 示例,请设置 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
- 资源的
zone
或region
(如适用)
这些属性是资源
GET
API 请求的网址的一部分。要查看 Deployment Manager 用于获取资源的属性,请参阅资源的GET
方法的 API 文档。例如,对于 Compute Engine 实例,instances.get
方法的请求网址包括resourceId
(配置中的name
)、zone
和project
。- 资源的
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