對雲端範本進行版本設定後,可以變更 YAML 中的 formatVersion 值以支援其他部署功能。

formatVersion 顯示在 YAML 的頂部,其值決定了可以在 VMware 雲端範本中指定的內容。

  • formatVersion: 1 包括 inputsresources 的範本規格。將自動套用至所有基本雲端範本。

    若要進一步瞭解基本範本,請參閱可檢閱的雲端範本

  • formatVersion: 2 新增 metadatavariablesoutputs 的範本規格。將自動套用至使用 Private AI Automation Services 部署的 AI Workstation 和 AI Kubernetes 叢集的雲端範本,但支援任何類型的部署。

    如需部署 AI Workstation 和 AI Kubernetes 叢集的相關資訊,請參閱如何部署私人 AI 目錄項目

身為雲端範本管理員,您可以使用 formatVersion: 2 包含的規格,以便使用者更方便存取部署。以下代碼範例已經過剪除,顯示了有關如何在 YAML 中使用 formatVersion: 2 範本規格的範例。

如何使用 metadata 範本規格

使用 metadata 可隱藏或取消隱藏為使用者顯示的第 2 天作業。
metadata:
  deploymentSettings:
    disableUpdateDay2Action: true
    hideDisabledDay2Actions: true
  • disableUpdateDay2Action 為 true 時,使用者不會在 [動作] 功能表中看到更新第 2 天動作。如果使用者沒有更新權限,該選項將顯示為不可用 (呈現灰色)。
  • hideDisabledDay2Actions 為 true 時,針對使用者停用的任何第 2 天作業都不會顯示在 [動作] 功能表中。

更新變更專案第 2 天動作在以下範例中處於隱藏狀態。

在 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}
  • 在 handlebars 運算式中,變數繫結隨著實際值的變更動態更新。變數用雙大括弧 {{}} 括起來,在以下範例中,運算式是一個以點分隔的路徑。
    secret 1 name - {{resource.secret-data1.object.metadata.resourceVersion}}

範本規格在使用者介面中顯示的位置

所定義的 outputs 將顯示在部署中。
  • __deploymentOverview 是一種特殊輸出,顯示在部署概觀中。formatVersion2 範本設定中的 __deploymentOverview 輸出
  • 所有其他輸出 (例如 secret1namesecret2name) 顯示在部署的使用者事件索引標籤下。

    formatVersion2 範本設定中定義的其他輸出