本文說明如何使用託管在網際網路某處 (而非本機電腦) 的部署作業中的外部範本。
您可以將範本儲存於網路上任意位置的外部主機,並從設定中呼叫這些範本。從外部託管範本比將範本儲存於本機具有更多優勢:
- 輕鬆與他人共用範本
- 確保設定一律使用最新範本
- 自動管理相關的匯入項目與結構定義
每次重新部署設定時,Deployment Manager 一律會擷取最新版本的外部範本。如果您例行維護範本,則部署作業版本也會永遠保持在最新狀態。如果外部範本中參照了其他相依範本,則 Deployment Manager 也會處理這些範本的匯入作業。
示例
此設定可以匯入外部範本:
resources:
- name: my-frontend
type: gs://my-frontend-templates/webserver-frontend.jinja
事前準備
- 如要使用本指南提供的指令列範例,請安裝 `gcloud` 指令列工具。
- 如要使用本指南提供的 API 範例,請設定 API 存取權。
- 參閱設定說明文件。
- 參閱範本說明文件。
託管外部範本
您可以在 Google Cloud Storage 或公開存取的位置 (例如 GitHub) 託管外部範本。只要檔案設有網址而且您擁有範本的存取權,Deployment Manager 就能下載該份檔案。如果檔案透過結構定義匯入其他範本,則您也必須在相同的基本網址中託管這些範本。
在 Google Cloud Storage 上託管範本
如何在 Google Cloud Storage 中託管範本:
- 為範本建立值區,或是使用現有的值區。
- 上傳範本及相關範本檔案 (例如結構定義) 至值區。
- 如果您計劃從不同的 Google Cloud Platform 專案使用範本,而非範本所屬的專案,請設定存取權控制以允許存取。
在 Google Cloud Storage 中託管範本可讓您控制哪些使用者擁有範本的存取權,因為您可以在個別的 Cloud Storage 值區或特定範本上設定存取權控制選項。
相較之下,在其他公開存取的網址上託管範本就會讓範本廣為開放使用。
在公開存取的網址上作業
只要範本可以公開存取,您也可從 Google Cloud Storage 外部託管外部範本。例如,在 GitHub 上託管範本並使用 GitHub 網址來參照範本。
您需要針對 GitHub 特別提供原始的 GitHub 網址,以讓 Deployment Manager 能取得範本而非 HTML GitHub 頁面。原始網址的範例如下所示:
https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/jinja/vm_template.jinja
呼叫外部範本
呼叫外部範本的方法與呼叫本機範本相似,但需要提供範本檔案的完整網址做為類型。例如:
resources:
- name: my-salt-cluster
type: gs://v2/saltstack/salt_cluster.jinja
對於 GitHub 網址:
resources:
- name: my-salt-cluster
type: https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/vm_template.jinja
如果外部範本匯入其他範本,或者有隨附的結構定義,則您可以將相關檔案儲存在相同目錄或相對的子目錄中,並將這些其他範本包含在相對網址中。Deployment Manager 就會使用以基本網址為基礎的相對路徑來尋找其他範本。
請參閱下方設定範例:
resources:
- name: my-salt-cluster
type: gs://v2/saltstack/salt_cluster.jinja
名為 salt_cluster.jinja.schema
的結構定義檔案匯入了下列這些檔案:
imports:
- path: minion.py
- path: master.py
- path: examples/source/example.py
Deployment Manager 會自動為範本下載及匯入所有的必要檔案。