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 parainputs
eresources
. 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 parametadata
,variables
eoutputs
. 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
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.
Como usar a especificação do modelo de variáveis
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.
- 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}
- 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
- __deploymentOverview é um tipo especial de saída que aparece na implantação Visão Geral.
- Todas as outras saídas, como secret1name e secret2name, aparecem na implantação sob a guia Eventos de Usuários.