クラウド テンプレートのバージョン管理の後で、追加の展開機能をサポートするように YAML の formatVersion 値を変更することができます。

formatVersion は YAML の先頭に表示され、その値によって VMware クラウド テンプレートに指定できる内容が決まります。

  • formatVersion: 1 には、inputsresources のテンプレート仕様が含まれています。この値はすべての基本的なクラウド テンプレートに自動的に適用されます。

    基本的なテンプレートの詳細については、「確認可能なクラウド テンプレート」を参照してください。

  • formatVersion: 2 では、metadatavariablesoutputs のテンプレート仕様を追加します。この値は、Private AI Automation Services を使用して展開される AI Workstation および AI Kubernetes クラスタのクラウド テンプレートに自動的に適用されますが、あらゆる種類の展開がサポートされます。

    AI Workstation と AI Kubernetes クラスタの展開については、「Private AI カタログ アイテムを展開する方法」を参照してください。

クラウド テンプレート管理者は、formatVersion: 2 が含まれる仕様を使用して、ユーザーが展開にアクセスしやすくすることができます。次のコード サンプルは、YAML で formatVersion: 2 テンプレート仕様を使用する方法の例を示すために省略しています。

metadata テンプレート仕様を使用する方法

ユーザーに表示されるインストール後の作業の非表示と非表示を切り替えるには、 metadata を使用します。
metatdata:
  deploymentSettings:
    disableUpdateDay2Action: true
    hideDisabledDay2Actions: true
  • disableUpdateDay2Action が true の場合は、インストール後の作業である [更新] が [アクション] メニューに表示されません。ユーザーに更新権限がない場合、このオプションは使用不可と表示(グレーアウト)されます。
  • hideDisabledDay2Actions が true の場合、ユーザーに対して無効にされたインストール後の作業は [アクション] メニューに表示されません。

インストール後の作業である [更新][プロジェクトの変更] は、次の例では非表示になっています。

formatVersion2 テンプレート設定における [アクション] メニューのメタデータの定義

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}
  • ハンドルバー式では、実際の値が変更されると、変数バインドが動的に更新されます。変数は二重中括弧 {{}} で囲まれています。この例では、式はドット区切りのパスです。
    secret 1 name - {{resource.secret-data1.object.metadata.resourceVersion}}

テンプレート仕様が表示されるユーザー インターフェイスの場所

定義した outputs が展開に表示されます。
  • __deploymentOverview は、展開の [概要] に表示される特別な種類の出力です。出力:formatVersion2 テンプレート設定の __deploymentOverview
  • 他のすべての出力(secret1namesecret2name など)は、展開の [ユーザー イベント] に表示されます。

    formatVersion2 テンプレート設定に定義されているその他の出力