本頁說明如何建立部署作業。針對設定中定義的一組資源所建立的執行個體即為部署。在要求中提供有效的設定就能建立部署作業。部署可包含許多 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 設定檔的相對路徑。
根據預設,如果您的設定包含專案中現有的資源,則部署作業就會取得這些資源,而您也可以透過部署作業來管理資源。如果您不想取得某項資源,則必須在 gcloud beta
指令中使用 --create-policy
選項,如下所示:
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 console、API 或 Google Cloud CLI 查看部署作業清單。
主控台
前往 Google Cloud 控制台的「Deployments」(部署作業) 頁面。
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