本文档介绍如何在部署中使用托管在互联网的某处而非本地计算机上的外部模板。
您可以将模板存储在互联网任意位置的外部主机上,并在配置中调用这些模板。在外部托管模板比在本地存储模板具有一定的优势:
- 轻松与他人共享模板
- 确保配置始终使用最新模板
- 自动管理相关的导入和架构
每次重新部署配置时,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 将自动下载并导入模板的所有必要文件。