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 para inputs y resources. 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 para metadata, variables y outputs. 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?

Utilice metadata para ocultar o mostrar las operaciones del día 2 que se muestran para los usuarios.
metadata:
  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.

Definir metadatos para el menú Acción en la configuración de plantilla formatVersion2

¿Cómo se utiliza la especificación de la plantilla de variables?

Utilice variables para especificar valores que se reutilizan varias veces dentro de una plantilla, como en las configuraciones dinámicas. Una definición de variable puede incluir cadenas sin formato, entradas y hacer referencia a otras variables. Haga referencia a las variables que defina en las secciones de recursos y resultados de la plantilla.
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.

El ejemplo de resultados incluye:
  • 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}
Los siguientes ejemplos de construcción se proporcionan en el __deploymentOverview.
  • 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

Los resultados que definió aparecerán en la implementación.
  • __deploymentOverview es un tipo de resultado especial que aparece en la implementación Descripción general. Resultado:__deploymentOverview en la configuración de plantilla formatVersion2
  • Todos los demás resultados, como secret1name y secret2name, aparecen en la implementación en la pestaña Eventos de usuario.

    Otros resultados definidos en la configuración de plantilla formatVersion2