本頁說明如何建立可用來建立部署的設定。如要進一步瞭解部署,請參閱建立部署。
設定檔可以定義構成部署作業的各項 Google Cloud 資源。您必須使用設定檔才能建立部署作業,而且設定檔必須以 YAML 語法編寫。
事前準備
- 如要使用本指南提供的指令列範例,請安裝 `gcloud` 指令列工具。
- 如要使用本指南提供的 API 範例,請設定 API 存取權。
- 瞭解設定檔的相關基本知識。
設定檔結構
設定檔是以 YAML 格式編寫,具有以下結構:
# imported templates, if applicable
imports:
# path relative to the configuration file
- path: path/to/template.jinja
name: my-template
- path: path/to/another/template.py
name: another-template
resources:
- name: NAME_OF_RESOURCE
type: TYPE_OF_RESOURCE
properties:
property-a: value
property-b: value
...
property-z: value
- name: NAME_OF_RESOURCE
type: TYPE_OF_RESOURCE
properties:
property-a: value
property-b: value
...
property-z: value
每個區段定義了部署作業的不同部分:
imports
區段提供了一份清單,當中包含用於設定的範本檔案。Deployment Manager 會以遞迴方式展開所有匯入的範本,藉此構成最終設定。resources
區段是構成該項部署作業的資源清單。資源可以是下列項目:
您也可以加入其他選用區段,例如 outputs
和 metadata
區段。outputs
區段可讓您將範本和設定中的資料以輸出內容的形式公開,以供同一項部署作業中的其他範本使用,或是讓使用者將其視為輸入內容。metadata
區段可讓您使用其他功能,例如在不同資源之間設定明確的相依性。
設定至少須宣告 resources
區段和資源清單,其他區段則為選用區段。
宣告資源類型
您必須將設定中的各項資源指定為類型,類型包括 Google 代管的基礎類型、複合類型、類型提供者或匯入範本。
Google 代管的基礎類型會解析為 Google Cloud 資源。舉例來說,Cloud SQL 執行個體或 Cloud Storage 值區就屬於 Google 代管的基礎類型。您可以使用下列語法宣告這些類型:
type: <api>.<api-version>.<resource-type>
舉例來說,Compute Engine 執行個體會有下列類型:
type: compute.v1.instance
如為 BigQuery 資料庫,則類型可能為:
type: bigquery.v2.dataset
如需所有支援類型的清單,請使用下列指令:
gcloud deployment-manager types list
如需支援的 Google 代管基礎類型完整清單,請參閱支援的資源類型。
如果您使用的是複合類型或類型提供者,請按照下列指示宣告類型:
# Composite type
resources:
- name: my-composite-type
type: [PROJECT]/composite:[TYPE_NAME]
如為類型提供者:
# Base type
resources:
- name: my-base-type
type: [PROJECT_ID]/[TYPE_PROVIDER_NAME]:[TYPE_NAME]
您也可以使用 Google 代管的類型提供者 (Beta 版) 建立資源。如需 Google Cloud 類型提供者的清單,請參閱「支援的類型提供者」。
如要使用範本,請將範本宣告為類型,並將範本名稱或路徑當做 type
的值。舉例來說,下列設定會匯入名為 my_vm_template.jinja 的範本,並將範本提供為類型:
imports:
- path: path/to/template/my_vm_template.jinja
name: my-template.jinja
resources:
- name: my-first-virtual-machine
type: my-template.jinja
如要進一步瞭解範本,請參閱建立基本範本。
宣告資源屬性
宣告資源的類型之後,您必須一併為資源提供 name
並指定所需屬性。舉例來說,下列設定檔會定義名為 vm-created-by-deployment-manager
的虛擬機器執行個體及其所需屬性。Deployment Manager 會使用這些資訊建立具備所需屬性的 VM 執行個體。
如要確定資源的 properties
,您可以使用資源的 API 說明文件:
- 參閱資源的
insert
或create
方法要求格式。 - 如果要求 URI 含有區域,請在屬性中新增區域。
如為陣列,請使用 YAML 清單語法列出陣列的元素。舉例來說,如要使用 API 建立 Compute Engine 執行個體,您必須提供要與執行個體相連的磁碟陣列,格式如下:
"disks": [ { "type": "PERSISTENT", "deviceName": "disk1", ... }, { "type": "PERSISTENT", "deviceName": "disk2", ... } ]
在 Deployment Manager 設定中,您可以使用下列語法新增這些磁碟:
disks: - deviceName: disk1 type: PERSISTENT ... - deviceName: disk2 type: PERSISTENT
您也可以提供該資源任何的可編寫屬性。如要確定是否可以編寫某個屬性,請使用該資源類型的 API 參考說明文件。例如,Compute Engine 參考資料標示了某些僅適用於輸出的屬性,代表這些屬性是無法變更的,因此您無法在設定中定義這些屬性。
有些 API 在建立資源時必須具有某些不可或缺的屬性。舉例來說,在建立新的磁碟時,Compute Engine 永久磁碟需要磁碟名稱、映像檔來源和磁碟大小等。如要瞭解特定資源,請查看該資源的 API 參考資料。
定義範本屬性
如果您匯入範本是為了在設定中使用,請透過 properties
區段定義範本屬性值,而非資源屬性值。如果範本中沒有範本屬性,您可以完全省略 properties
區段。
透過其他 Google Cloud 服務建立資源
最後,設定檔可以從不同的 Google Cloud服務建立資源。舉例來說,下列設定檔會從 Compute Engine 和 BigQuery 建立資源:
系統支援的資源類型和屬性
如要查看支援的 Google 代管資源完整清單,請參閱支援的資源類型說明文件。