Dopo aver impostato la versione del modello cloud, è possibile modificare il valore di formatVersion nel codice YAML per supportare funzionalità di distribuzione aggiuntive.

formatVersion viene visualizzato nella parte superiore del codice YAML e il suo valore determina ciò che è possibile specificare nel modello cloud di VMware.

  • formatVersion: 1 include le specifiche del modello per inputs e resources. Si applica automaticamente a tutti i modelli cloud di base.

    Per ulteriori informazioni su un modello di base, vedere Modello cloud revisionabile.

  • formatVersion: 2 aggiunge le specifiche del modello per metadata, variables e outputs. Si applica automaticamente ai modelli cloud per Workstation IA e AI Kubernetes Cluster distribuiti utilizzando Private AI Automation Services, ma supporta qualsiasi tipo di distribuzione.

    Per informazioni sulla distribuzione di Workstation IA e AI Kubernetes Cluster, vedere Come distribuire gli elementi del catalogo di Private AI.

In qualità di amministratore dei modelli cloud, è possibile utilizzare le specifiche incluse in formatVersion: 2 per rendere le distribuzioni più accessibili agli utenti. Gli esempi di codice seguenti sono progettati per illustrare esempi di utilizzo delle specifiche del modello formatVersion: 2 in YAML.

Come si utilizza la specifica del modelli metadata

Utilizzare metadata per nascondere o mostrare le operazioni giorno 2 visualizzate per gli utenti.
metadata:
  deploymentSettings:
    disableUpdateDay2Action: true
    hideDisabledDay2Actions: true
  • Quando disableUpdateDay2Action è true, gli utenti non vedono l'operazione giorno 2 Aggiorna nel menu Azioni. Se l'utente non dispone delle autorizzazioni necessarie per l'aggiornamento, l'opzione viene visualizzata come non disponibile (disattivata).
  • Quando hideDisabledDay2Actions è true, tutte le operazioni giorno 2 che sono state disattivate per l'utente non verranno visualizzate nel menu Azioni.

Le azioni giorno 2 Aggiorna e Modifica progetto sono nascoste nell'esempio seguente.

Definizione dei metadati per il menu Azione nelle impostazioni del modello formatVersion2

Come si utilizza la specifica dei modelli variables

Utilizzare variables per specificare valori che vengono riutilizzati più volte all'interno di un modello, ad esempio nelle configurazioni dinamiche. Una definizione di variabile può includere stringhe normali e input, nonché fare riferimento ad altre variabili. È possibile fare riferimento alle variabili definite nelle sezioni resources e outputs del modello.
variables:
  applications:
    - name: App1
      port: 3000
      showAppInfo: true
    - name: App2
      port: 4000
      showAppInfo: false

Come si utilizza la specifica dei modelli outputs

Utilizzare outputs per definire le informazioni di distribuzione che si desidera rendere disponibili per l'utente. Tutti gli output vengono visualizzati nella pagina dei dettagli della distribuzione in Eventi utente, ad eccezione dei valori di __deploymentOverview visualizzati nella Panoramica della distribuzione.

L'esempio outputs include gli elementi seguenti:
  • variables definito nella specifica del modello delle variabili
  • resources definito in una sezione relativa alle risorse e incluso nell'esempio di codice seguente
  • __deploymentOverview scritto in 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}
I seguenti esempi di costrutto sono forniti in __deploymentOverview.
  • Il costrutto if è un'espressione condizionale basata su input booleani.
          %{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}
  • Il ciclo for consente l'iterazione su array. Per ogni app elencata nell'array, vengono valutate le condizioni if e i valori delle variabili vengono assegnati e visualizzati come output.
          %{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}
  • Nell'espressione handlebars, le associazioni delle variabili vengono aggiornate dinamicamente quando i valori effettivi cambiano. La variabile è racchiusa tra parentesi graffe doppie {{}} e in questo esempio l'espressione è un percorso separato da punti.
    secret 1 name - {{resource.secret-data1.object.metadata.resourceVersion}}

Dove vengono visualizzate le specifiche del modello nell'interfaccia utente

L'elemento outputs definito viene visualizzato nella distribuzione.
  • __deploymentOverview è un tipo di output speciale che viene visualizzato nella Panoramica della distribuzione. Output:__deploymentOverview nelle impostazioni del modello formatVersion2
  • Tutti gli altri output come secret1name e secret2name vengono visualizzati nella distribuzione nella scheda Eventi utente.

    Altri output definiti nelle impostazioni del modello formatVersion2