能夠建立和定義自訂範本屬性是使用範本的優點之一。範本屬性是您在範本檔案中定義的任意變數。使用範本的任何設定檔或範本檔都可以提供範本屬性值,因此無需直接變更範本。如此一來,您就能提取屬性,進而變更每個專屬設定的屬性值,而不用更新基礎範本。
舉例來說,下列指令會在機器類型的網址中指定範本屬性:
machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
在使用此範本的設定中,您可以在範本的 properties
區段設定 zone
的值。
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
Deployment Manager 會將 zone
的值傳入基礎範本。
事前準備
- 如要使用本指南提供的指令列範例,請安裝 `gcloud` 指令列工具。
- 如要使用本指南提供的 API 範例,請設定 API 存取權。
- 瞭解如何建立基本範本。
- 瞭解如何建立設定。
建立範本屬性
如何建立範本屬性:
Jinja
在 Jinja 中,使用下列語法來定義屬性:
{{ properties["PROJECT_NAME"] }}
例如:
Python
在 Python 中,使用下列語法來定義屬性:
context.properties["PROPERTY_NAME"]
例如:
如需完整的 Python 範例,請參閱 Deployment Manager GitHub 存放區。
在頂層設定中為範本屬性設定值
在頂層設定中,您可以使用下列語法來設定範本屬性值:
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
您必須為範本中的所有範本屬性設定值。舉例來說,如果範本含有 zone
、image
和 network
範本屬性,則您必須在頂層設定中定義這三項屬性的值。
如果某些範本屬性含有預設值,請考慮使用結構定義來設定這些預設值。如果預設值適用於部署作業,則可以在頂層設定中略過具有預設值的範本屬性。
在指令列中設定範本屬性的值
Deployment Manager 可讓您在 Google Cloud CLI 中直接設定這些值,因此無需在匯入範本的上層檔案中提供範本屬性的值。您可以略過建立頂層 YAML 檔案;Deployment Manager 會根據要求中的資訊自動為部署作業產生頂層設定。
比方說,假設您擁有下列範本,其中的範本屬性名為 zone
:
您可以使用 Google Cloud CLI 直接傳入此範本檔案,並在指令列中提供範本屬性的值。比方說,下列要求會傳入範本,並直接在指令列中指定 zone
屬性:
gcloud deployment-manager deployments create a-single-vm --template vm_template.jinja \
--properties zone:us-central1-a
請注意下列事項:
系統會將所有值剖析為 YAML 值,例如
version: 3
會以整數的形式傳入。如要將值指定為字串,請在值的前後加上逸出單引號,即version: \'3\'
。布林值不區分大小寫,因此系統會將
TRUE
、true
和True
視為相同的值。您必須傳入範本定義的所有必要屬性。您不能只提供屬性的子集。如果某些屬性具有預設值,則可以從指令列中省略該屬性。
如要指定多個屬性,請提供以逗號分隔的鍵/值組合。指定組合的順序並不影響結果。例如:
gcloud deployment-manager deployments create my-igm \ --template vm_template.jinja \ --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9
在您執行這個指令之後,Deployment Manager 會使用您提供的範本來建立部署作業。您可以透過 Google Cloud 控制台或 gcloud CLI 確認是否已建立部署。如要瞭解如何查看部署作業,請參閱查看資訊清單。
相關資源
- 使用環境變數填入專案和部署的相關資訊。
- 將範本以複合類型的形式永久新增到專案。
- 將範本託管於外部服務,以便與他人共用。