Depois de fazer o controle de versão do seu modelo de nuvem, você pode alterar o valor de formatVersion no YAML para oferecer suporte a recursos adicionais de implantação.

O formatVersion aparece na parte superior do seu YAML, e seu valor determina o que você pode especificar no seu modelo de nuvem do VMware.

  • formatVersion: 1 inclui especificações de modelo para inputs e resources. Ele se aplica automaticamente a todos os modelos de nuvem básicos.

    Para saber mais sobre um modelo básico, consulte Modelo de nuvem revisável.

  • formatVersion: 2 adiciona especificações de modelo para metadata, variables e outputs. Ele se aplica automaticamente aos modelos de nuvem para clusters do Workstation de IA e Kubernetes de IA que são implantados usando o Private AI Automation Services, mas oferece suporte a qualquer tipo de implantação.

    Para obter informações sobre a implantação de clusters de Workstation de IA Kubernetes de IA, consulte Como implantar itens de catálogo do Private AI.

Como administrador de modelos de nuvem, você pode usar as especificações incluídas com formatVersion: 2 para tornar as implantações mais acessíveis aos seus usuários. Os exemplos de código a seguir foram podados para mostrar exemplos de como usar especificações de modelos formatVersion: 2 no seu YAML.

Como usar a especificação do modelo de metadados

Use metadados para ocultar ou exibir as operações do dia 2 que aparecem para seus usuários.
metadata:
  deploymentSettings:
    disableUpdateDay2Action: true
    hideDisabledDay2Actions: true
  • Quando disableUpdateDay2Action é "true", os usuários não veem a operação Atualizar de dia 2 no menu Ações. Se o usuário não tiver permissão para atualizar, a opção aparecerá indisponível (esmaecida).
  • Quando hideDisabledDay2Actions é "true", qualquer operação de dia 2 que tenha sido desativada para o usuário não ficará visível no menu Ações.

As ações Atualizar e Alterar Projeto de dia 2 estão ocultas no exemplo a seguir.

Defina metadados para o menu Ação nas configurações do modelo formatVersion2

Como usar a especificação do modelo de variáveis

Use variáveis para especificar valores que são reutilizados várias vezes dentro de um modelo, como em configurações dinâmicas. Uma definição de variável pode incluir strings simples, entradas e fazer referência a outras variáveis. Você faz referência às variáveis definidas nas seções de recursos e saídas do modelo.
variables:
  applications:
    - name: App1
      port: 3000
      showAppInfo: true
    - name: App2
      port: 4000
      showAppInfo: false

Como usar a especificação do modelo de saídas

Use saídas para definir as informações de implantação que você deseja disponibilizar ao seu usuário. Todas as saídas são exibidas na página de detalhes da implantação em Eventos de Usuários, exceto por valores de __deploymentOverview, que aparecem sob a implantação Visão Geral.

O exemplo de saídas inclui:
  • variáveis definidas na especificação do modelo de variáveis
  • recursos definidos em uma seção de recursos e incluídos no seguinte exemplo de código
  • __deploymentOverview escrito em 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}
Os seguintes exemplos de construção são fornecidos em __deploymentOverview.
  • A construção if é uma expressão condicional baseada em 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}
  • O loop for permite iterar sobre matrizes. Para cada aplicativo listados na matriz, as condições if são avaliadas e os valores das variáveis são atribuídos e exibidos como saída.
          %{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}
  • Na expressão handlebars, as vinculações de variáveis são atualizadas dinamicamente conforme os valores reais mudam. A variável é colocada entre chaves duplas {{}} e neste exemplo, a expressão é um caminho separado por pontos.
    secret 1 name - {{resource.secret-data1.object.metadata.resourceVersion}}

Em que as especificações do modelo aparecem na IU

As saídas definidas aparecem na sua implantação.
  • __deploymentOverview é um tipo especial de saída que aparece na implantação Visão Geral. Saída:__deploymentOverview em configurações do modelo formatVersion2
  • Todas as outras saídas, como secret1name e secret2name, aparecem na implantação sob a guia Eventos de Usuários.

    Outras saídas definidas nas configurações do modelo formatVersion2