使用模板的一大优势在于能够创建和定义自定义模板属性。模板属性指的是您在模板文件中定义的任意变量。使用相关模板的任何配置文件或模板文件都可以提供模板属性值,无需直接更改模板。这让您可以提取属性,从而无需更新基本模板,即可更改每个唯一配置的属性值。
例如,以下代码行指定了机器类型网址中的模板属性:
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 确认是否已创建部署。如需了解查看部署,请参阅查看清单。