在外部主機儲存範本

本文說明如何使用託管在網際網路某處 (而非本機電腦) 的部署作業中的外部範本。

您可以將範本儲存於網路上任意位置的外部主機,並從設定中呼叫這些範本。從外部託管範本比將範本儲存於本機具有更多優勢:

  • 輕鬆與他人共用範本
  • 確保設定一律使用最新範本
  • 自動管理相關的匯入項目與結構定義

每次重新部署設定時,Deployment Manager 一律會擷取最新版本的外部範本。如果您例行維護範本,則部署作業版本也會永遠保持在最新狀態。如果外部範本中參照了其他相依範本,則 Deployment Manager 也會處理這些範本的匯入作業。

示例

此設定可以匯入外部範本:

resources:
- name: my-frontend
  type: gs://my-frontend-templates/webserver-frontend.jinja

事前準備

託管外部範本

您可以在 Google Cloud Storage 或公開存取的位置 (例如 GitHub) 託管外部範本。只要檔案設有網址而且您擁有範本的存取權,Deployment Manager 就能下載該份檔案。如果檔案透過結構定義匯入其他範本,則您也必須在相同的基本網址中託管這些範本。

在 Google Cloud Storage 上託管範本

如何在 Google Cloud Storage 中託管範本:

  1. 為範本建立值區,或是使用現有的值區。
  2. 上傳範本及相關範本檔案 (例如結構定義) 至值區。
  3. 如果您計劃從不同的 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 會自動為範本下載及匯入所有的必要檔案。