使用 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 設定檔的相對路徑。

根據預設,如果您的設定包含專案中現有的資源,則部署作業就會取得這些資源,而您也可以透過部署作業來管理資源。如果您不想取得某項資源,則必須在 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
    • 資源的 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 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

後續步驟