对云模板进行版本控制后,可以更改 YAML 中的 formatVersion 值以支持其他部署功能。
formatVersion 显示在 YAML 的顶部,其值决定了可以在 VMware 云模板中指定的内容。
formatVersion: 1
包括inputs
和resources
的模板规范。将自动应用于所有基本云模板。要了解有关基本模板的更多信息,请参见可查看的云模板。
-
formatVersion: 2
添加metadata
、variables
和outputs
的模板规范。将自动应用于使用 Private AI Automation Services 部署的 AI Workstation 和 AI Kubernetes 集群的云模板,但支持任何类型的部署。有关部署 AI Workstation 和 AI Kubernetes 集群的信息,请参见如何部署专用 AI 目录项。
作为云模板管理员,您可以使用 formatVersion: 2
包含的规范使用户更便于访问部署。以下代码示例进行了修剪,展示了如何在 YAML 中使用 formatVersion: 2
模板规范的示例。
如何使用 metadata 模板规范
使用
metadata 可隐藏或取消隐藏为用户显示的实施后操作。
metatdata: deploymentSettings: disableUpdateDay2Action: true hideDisabledDay2Actions: true
- 当 disableUpdateDay2Action 为 true 时,用户不会在“操作”菜单中看到更新实施后操作。如果用户没有更新的权限,该选项将显示为不可用(灰显)。
- 当 hideDisabledDay2Actions 为 true 时,针对用户停用的任何实施后操作都不会显示在“操作”菜单中。
更新和更改项目实施后操作在以下示例中处于隐藏状态。
如何使用 variables 模板规范
使用
variables 可指定在模板中多次重用的值,例如在动态配置中。变量定义可以包括普通字符串、输入和引用其他变量。可以引用在模板的 resources 和 outputs 部分中定义的变量。
variables: applications: - name: App1 port: 3000 showAppInfo: true - name: App2 port: 4000 showAppInfo: false
如何使用 outputs 模板规范
使用 outputs 可定义要提供给用户的部署信息。所有输出都显示在部署详细信息页面上的用户事件下,但 __deploymentOverview 值除外,该值显示在部署概览下。
outputs 示例包括:
- variables 模板规范中定义的 variables
- 在 resources 部分中定义并包含在以下代码示例中的 resources
- 以 Markdown 编写的 __deploymentOverview
outputs: secret1name: value: ${resource.secret-data1.object.metadata.name} secret2name: value: ${resource.secret-data2.object.metadata.name} __deploymentOverview: value: | ### Deployment details %{if starts_with(resource.CCI_Supervisor_Namespace_1.name, 'dummy')} This is a dummy namespace with name ${resource.CCI_Supervisor_Namespace_1.name} %{else} This is a real namespace with name ${resource.CCI_Supervisor_Namespace_1.name} %{endif} %{for app in variable.applications} ##### App details %{if app.showAppInfo} App name - ${app.name}, App port - ${app.port} %{else} App info is hidden because showAppInfo is ${app.showAppInfo} %{endif} %{endfor} #### Handle bars bindings. The below values will update dynamically if the values change. Note that we use '\{\{' to indicate handle bars expressions secret 1 resource version - {{resource.secret-data1.object.metadata.resourceVersion}} resources: CCI_Supervisor_Namespace_1: type: CCI.Supervisor.Namespace properties: name: ${input.namespaceName} regionName: private-ai-foundation-dsdunnjz className: vpaif-quickstart-3 secret-data1: type: CCI.Supervisor.Resource properties: context: ${resource.CCI_Supervisor_Namespace_1.id} manifest: apiVersion: v1 kind: Secret metadata: name: nvaie-apikey type: Opaque stringData: username: $oauthtoken password: ${input.ngcPortalAccessKey} secret-data2: type: CCI.Supervisor.Resource properties: context: ${resource.CCI_Supervisor_Namespace_1.id} manifest: apiVersion: v1 kind: Secret metadata: name: nvaie-apikey1 type: Opaque stringData: username: $oauthtoken password: ${input.ngcPortalAccessKey}
__deploymentOverview 中提供以下构造示例。
- if 构造是基于布尔输入的条件表达式。
%{if starts_with(resource.CCI_Supervisor_Namespace_1.name, 'dummy')} This is a dummy namespace with name ${resource.CCI_Supervisor_Namespace_1.name} %{else} This is a real namespace with name ${resource.CCI_Supervisor_Namespace_1.name} %{endif}
- for 循环允许对数组进行迭代。对于数组中列出的每个 app,评估 if 条件,分配变量值并将其显示为输出。
%{for app in variable.applications} ##### App details %{if app.showAppInfo} App name - ${app.name}, App port - ${app.port} %{else} App info is hidden because showAppInfo is ${app.showAppInfo} %{endif} %{endfor}
- 在 handlebars 表达式中,变量绑定随着实际值的更改动态更新。变量用双大括号 {{}} 括起来,在以下示例中,表达式是一个以点分隔的路径。
secret 1 name - {{resource.secret-data1.object.metadata.resourceVersion}}
模板规范在 UI 中显示的位置
所定义的
outputs 将显示在部署中。
- __deploymentOverview 是一种特殊输出,显示在部署概览中。
- 所有其他输出(如 secret1name 和 secret2name 显示在部署的用户事件选项卡下。