在外部主机上存储模板

本文档介绍如何在部署中使用托管在互联网的某处而非本地计算机上的外部模板。

您可以将模板存储在互联网任意位置的外部主机上,并在配置中调用这些模板。在外部托管模板比在本地存储模板具有一定的优势:

  • 轻松与他人共享模板
  • 确保配置始终使用最新模板
  • 自动管理相关的导入和架构

每次重新部署配置时,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 将自动下载并导入模板的所有必要文件。