Après avoir contrôlé la version de votre modèle de cloud, vous pouvez modifier la valeur formatVersion dans votre fichier YAML pour prendre en charge des fonctionnalités de déploiement supplémentaires.

FormatVersion s'affiche en haut de votre fichier YAML et sa valeur détermine ce que vous pouvez spécifier dans votre modèle de cloud VMware.

  • formatVersion: 1 inclut des spécifications de modèle pour les inputs et les resources. Il s'applique automatiquement à tous les modèles de cloud de base.

    Pour en savoir plus sur un modèle de base, reportez-vous à la section Modèle de cloud révisable.

  • formatVersion: 2 ajoute des spécifications de modèle pour les metadata, les variables et les outputs. Cela s'applique automatiquement aux modèles de cloud pour AI Workstation et les clusters Kubernetes d'IA qui sont déployés à l'aide de Private AI Automation Services, mais prend en charge n'importe quel type de déploiement.

    Pour plus d'informations sur le déploiement d'AI Workstation et des clusters Kubernetes d'IA, reportez-vous à la section Déploiement d'éléments de catalogue Private AI.

En tant qu'administrateur de modèle de cloud, vous pouvez utiliser les spécifications incluses dans formatVersion: 2 pour rendre les déploiements plus accessibles à vos utilisateurs. Les exemples de code suivants sont supprimés pour montrer des exemples d'utilisation des spécifications de modèle formatVersion: 2 dans votre fichier YAML.

Comment utiliser la spécification du modèle metadata ?

Utilisez metadata pour masquer ou afficher les opérations de jour 2 qui s'affichent pour vos utilisateurs.
metadata:
  deploymentSettings:
    disableUpdateDay2Action: true
    hideDisabledDay2Actions: true
  • Lorsque disableUpdateDay2Action est défini sur true, les utilisateurs ne voient pas l'opération de jour 2 Mettre à jour dans le menu Actions. Si l'utilisateur n'est pas autorisé à effectuer la mise à jour, l'option n'est pas disponible (grisée).
  • Lorsque hideDisabledDay2Actions est défini sur true, toutes les opérations de jour 2 qui ont été désactivées pour l'utilisateur ne s'affichent pas dans le menu Actions.

Les actions de jour 2 Mettre à jour et Modifier le projet sont masquées dans l'exemple suivant.

Définir les métadonnées pour le menu Action dans les paramètres du modèle formatVersion2

Comment utiliser la spécification du modèle variables ?

Utilisez variables pour spécifier des valeurs réutilisées plusieurs fois dans un modèle, par exemple dans des configurations dynamiques. Une définition de variable peut inclure des chaînes simples, des entrées et faire référence à d'autres variables. Vous référencez les variables que vous définissez dans les sections ressources et sorties du modèle.
variables:
  applications:
    - name: App1
      port: 3000
      showAppInfo: true
    - name: App2
      port: 4000
      showAppInfo: false

Comment utiliser la spécification du modèle outputs ?

Utilisez outputs pour définir les informations de déploiement que vous souhaitez mettre à la disposition de votre utilisateur. Toutes les sorties s'affichent sur la page des détails du déploiement sous Événements utilisateur, à l'exception des valeurs __deploymentOverview, qui s'affichent sous le déploiement Présentation.

L'exemple outputs inclut les éléments suivants :
  • variables, défini dans la spécification du modèle de variables
  • resources, défini dans une section Ressources et inclus dans l'exemple de code suivant
  • __deploymentOverview, écrit dans 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}
Les exemples de construction suivants sont fournis dans __deploymentOverview.
  • La construction if est une expression conditionnelle basée sur des entrées booléennes.
          %{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}
  • La boucle for permet d'effectuer des itérations sur les tableaux. Pour chaque app répertoriée dans le tableau, les conditions if sont évaluées et les valeurs de variable sont attribuées et affichées en tant que sortie.
          %{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}
  • Dans l'expression handlebars, les liaisons de variable se mettent à jour dynamiquement lorsque les valeurs changent. La variable est placée entre accolades doubles {{}} et, dans cet exemple, l'expression est un chemin séparé par des points.
    secret 1 name - {{resource.secret-data1.object.metadata.resourceVersion}}

Emplacement de l'affichage des spécifications de modèle dans l'interface utilisateur

Les outputs que vous avez définies s'affichent dans votre déploiement.
  • __deploymentOverview est un type spécial de sortie qui s'affiche dans le déploiement Présentation. Output :__deploymentOverview dans les paramètres du modèle formatVersion2
  • Toutes les autres sorties, telles que secret1name et secret2name s'affichent dans le déploiement sous l'onglet Événements utilisateur.

    Autres sorties définies dans les paramètres du modèle formatVersion2