Después de crear versiones de la plantilla de nube, puede cambiar el valor de formatVersion en su archivo YAML para admitir funciones de implementación adicionales.
formatVersion se encuentra en la parte superior del archivo YAML y su valor determina qué se puede especificar en la plantilla de nube de VMware.
formatVersion: 1
incluye especificaciones de plantilla parainputs
yresources
. Se aplica automáticamente a todas las plantillas de nube básicas.Para obtener más información sobre una plantilla básica, consulte Plantilla de nube que se puede revisar.
-
formatVersion: 2
agrega especificaciones de plantilla parametadata
,variables
youtputs
. Se aplica automáticamente a las plantillas de nube para AI Workstation y los clústeres de AI Kubernetes que se implementan mediante Private AI Automation Services, pero admite cualquier tipo de implementación.Para obtener información sobre la implementación de AI Workstation y los clústeres de AI Kubernetes, consulte Cómo implementar los elementos del catálogo de Private AI.
Como administrador de plantillas de nube, puede utilizar las especificaciones incluidas con formatVersion: 2
para que los usuarios puedan acceder más fácilmente a las implementaciones. Los siguientes ejemplos de código están recortados para mostrar cómo utilizar las especificaciones de plantilla de formatVersion: 2
en el archivo YAML.
¿Cómo se utiliza la especificación de la plantilla de metadatos?
metatdata: deploymentSettings: disableUpdateDay2Action: true hideDisabledDay2Actions: true
- Cuando disableUpdateDay2Action es true, los usuarios no ven la operación del día 2 de Actualizar en el menú Acciones. Si el usuario no tiene permiso para actualizar, la opción se muestra como no disponible (atenuada).
- Cuando hideDisabledDay2Actions es true, cualquier operación del día 2 que se haya desactivado para el usuario no aparecerá en el menú Acciones.
Las acciones del día 2 Actualizar y Cambiar proyecto están ocultas en el siguiente ejemplo.
¿Cómo se utiliza la especificación de la plantilla de variables?
variables: applications: - name: App1 port: 3000 showAppInfo: true - name: App2 port: 4000 showAppInfo: false
¿Cómo se utiliza la especificación de la plantilla de resultados?
Utilice resultados para definir la información de implementación que desea que esté disponible para el usuario. Todos los resultados se muestran en la página de detalles de la implementación en Eventos de usuario, excepto los valores de __deploymentOverview que se muestran en la implementación Descripción general.
- variables definidas en la especificación de la plantilla de variables
- recursos definidos en una sección de recursos e incluidos en el siguiente código de ejemplo
- __deploymentOverview escrito en Markdown
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}
- La construcción if es una expresión condicional basada en entradas booleanas.
%{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}
- El bucle for permite la iteración a través de matrices. Para cada app que aparece en la matriz, se evalúan las condiciones if y los valores de las variables se asignan y se muestran como resultado.
%{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}
- En la expresión de handlebars, los enlaces de variables se actualizan dinámicamente a medida que cambian los valores reales. La variable está encerrada en llaves dobles {{}} y, en este ejemplo, la expresión es una ruta de acceso separada por puntos.
secret 1 name - {{resource.secret-data1.object.metadata.resourceVersion}}
Dónde aparecen las especificaciones de plantilla en la interfaz de usuario
- __deploymentOverview es un tipo de resultado especial que aparece en la implementación Descripción general.
- Todos los demás resultados, como secret1name y secret2name, aparecen en la implementación en la pestaña Eventos de usuario.