Como desenvolvedor de design de modelo de nuvem, você usa parâmetros de entrada para que os usuários possam fazer seleções personalizadas no momento da solicitação.

Como as entradas funcionam

Quando os usuários fornecem entradas, não é mais necessário salvar várias cópias dos modelos que são apenas um pouco diferentes. Além disso, as entradas podem preparar um modelo para operações de dia 2. Consulte Como usar entradas de modelo de nuvem para atualizações de dia 2 do vRealize Automation.

As seguintes entradas mostram como criar um modelo de nuvem para um servidor de banco de dados MySQL, em que os usuários podem implantar esse modelo em diferentes ambientes de recursos de nuvem e aplicar diferentes recursos e credenciais todas as vezes.

Variáveis de entrada

Adicionando parâmetros de entrada

Adicione uma seção inputs ao seu código de modelo, onde são definidos valores selecionáveis.

No exemplo a seguir, o tamanho da máquina, o sistema operacional e o número de servidores agrupados em cluster são selecionáveis.

inputs:
  wp-size:
    type: string
    enum:
      - small
      - medium
    description: Size of Nodes
    title: Node Size
  wp-image:
    type: string
    enum:
      - coreos
      - ubuntu
    title: Select Image/OS
  wp-count:
    type: integer
    default: 2
    maximum: 5
    minimum: 2
    title: Wordpress Cluster Size
    description: Wordpress Cluster Size (Number of nodes)

Se você não se sentir à vontade ao editar o código, poderá clicar na guia Entradas do editor de código e inserir as configurações lá. O exemplo a seguir mostra algumas entradas para o banco de dados MySQL mencionado anteriormente.

Guia Entradas

Fazendo referência a parâmetros de entrada

Em seguida, na seção resources, referencie um parâmetro de entrada usando a sintaxe ${input.propriedade-nome}.

Se um nome de propriedade incluir um espaço, delimite-o com colchetes e aspas duplas em vez de usar a notação de ponto: ${input["nome da propriedade"]}

Importante: No código do modelo de nuvem, não é possível usar a palavra input, exceto para indicar um parâmetro de entrada.
resources:
  WebTier:
    type: Cloud.Machine
    properties:
      name: wordpress
      flavor: '${input.wp-size}'
      image: '${input.wp-image}'
      count: '${input.wp-count}'

Entrada aninhada

Se você quiser organizar ou categorizar entradas, uma entrada aninhada será permitida. No exemplo a seguir, a CPU e a memória estão juntas sob um título principal de nível.

Observação: Um grupo de entradas aninhadas é diferente de criar e fazer referência a um grupo de propriedades formais.
inputs:
  cluster:
    type: integer
    title: Cluster
    default: 1
    minimum: 1
    maximum: 4
  level:
    type: object
    properties:
      cpu:
        type: integer
        title: CPU
        default: 1
        minimum: 1
        maximum: 4
      memory:
        type: integer
        title: Memory
        default: 2048
        minimum: 2048
        maximum: 4096

Na seção recursos, para fazer referência à entrada aninhada, inclua o principal no caminho.

resources:
  Disk_1:
    type: Cloud.vSphere.Disk
    allocatePerInstance: true
    properties:
      capacityGb: 1
      count: ${input.cluster}
  Machine_1:
    type: Cloud.vSphere.Machine
    allocatePerInstance: true
    properties:
      totalMemoryMB: ${input.level.memory}
      attachedDisks:
        - source: ${slice(resource.Disk_1[*].id, count.index, count.index + 1)[0]}
      count: ${input.cluster}
      imageRef: ubuntu
      cpuCount: ${input.level.cpu}

Entrada opcional versus necessária

"Para todos os tipos, exceto Boolean, a entrada do usuário é opcional por padrão." Para exigir entrada, siga um destes procedimentos:

  • Defina um valor padrão.
  • Quando você não tiver entradas aninhadas, adicione a propriedade populateRequiredOnNonDefaultProperties:
    inputs:
      cluster:
        type: integer
        populateRequiredOnNonDefaultProperties: true
        title: Cluster
        minimum: 1
        maximum: 4

    Observe que você também pode aplicar essa configuração ao fazer referência a um grupo de propriedades formais:

    inputs:
      pgmachine:
        type: object
        populateRequiredOnNonDefaultProperties: true
        $ref: /ref/property-groups/machine
  • Com entradas aninhadas, adicione a propriedade populateRequiredForNestedProperties:
    inputs:
      cluster:
        type: integer
        title: Cluster
        default: 1
        minimum: 1
        maximum: 4
      level:
        type: object
        properties:
          cpu:
            type: integer
            populateRequiredForNestedProperties: true
            title: CPU
            minimum: 1
            maximum: 4
          memory:
            type: integer
            populateRequiredForNestedProperties: true
            title: Memory
            minimum: 2048
            maximum: 4096

    Observe que você também pode aplicar essa configuração quando uma referência ao grupo de propriedades formais está aninhada:

      level:
        type: object
        properties:
          cpu:
            type: integer
            populateRequiredForNestedProperties: true
            title: CPU
            minimum: 1
            maximum: 4
          memory:
            type: integer
            populateRequiredForNestedProperties: true
            title: Memory
            minimum: 2048
            maximum: 4096
          pgrequester:
            type: object
            populateRequiredForNestedProperties: true
            $ref: /ref/property-groups/requesterDetails

Entrada opcional — Para forçar a entrada a permanecer opcional, defina um valor padrão vazio usando marcas de tique:

owner:
  type: string
  minLength: 0
  maxLength: 30
  title: Owner Name
  description: Account Owner
  default: ''
Entrada opcional

Enviando entradas para o vRealize Orchestrator

Para fornecer uma entrada de modelo de nuvem a uma ação do vRealize Orchestrator, siga estas etapas. Com as ações do vRealize Orchestrator, o formulário Entradas é mais fácil de usar do que digitar diretamente no código do modelo de nuvem.

  1. Na instância do vRealize Orchestrator integrada ao vRealize Automation, verifique se a ação desejada existe.
  2. Na página de design de modelo de nuvem no Cloud Assembly, acesse a guia Entradas e clique para adicionar uma nova entrada.
  3. Selecione um tipo e selecione Origem externa.
  4. Ao lado de Ação, clique no botão Selecionar.
  5. Use o campo Pesquisa de ação para localizar e selecionar a ação do vRealize Orchestrator.
  6. Insira ou selecione qualquer parâmetro de ação .

Depois de salvar e criar a entrada, ela aparecerá no código do modelo de nuvem como uma entrada $dynamicDefault. Por exemplo:

inputs:
  backupnetwork:
    type: string
    $dynamicDefault: /data/vro-actions/com.insanpaolo/getBackupNetworkVLAN?network={{abcdef123456}}&tenant={{abcdef123456}}

Lista de propriedades de entrada

Propriedade Descrição
const Usado com oneOf. O valor real associado ao título amigável.
default Valor pré-preenchido para a entrada.

O padrão deve ser do tipo correto. Não digite uma palavra como padrão para um número inteiro.

description Texto de ajuda do usuário para a entrada.
encrypted

Se você deseja criptografar a entrada que o usuário digita, verdadeiro ou falso.

As senhas normalmente são criptografadas.

Também é possível criar propriedades criptografadas que são reutilizáveis em vários modelos de nuvem. Consulte Propriedades secretas do Cloud Assembly.

enum Um menu suspenso de valores permitidos.

Use o exemplo a seguir como um guia de formatação.

enum:
      - value 1
      - value 2
format Define o formato esperado para a entrada. Por exemplo, (25/04/19) suporta data e hora.

Permite o uso do selecionador de data em formulários personalizados do Service Broker.

itens Declara itens em uma matriz. Oferece suporte a número, inteiro, cadeia de caracteres, boolean ou objeto.
maxItems Número máximo de itens selecionáveis em uma matriz.
maxLength Número máximo de caracteres permitido para uma cadeia de caracteres.

Por exemplo, para limitar um campo a 25 caracteres, digite maxLength: 25.

maximum Maior valor permitido para um número ou inteiro.
minItems Número mínimo de itens selecionáveis em uma matriz.
minLength Número mínimo de caracteres permitido para uma cadeia de caracteres.
minimum Menor valor permitido para um número ou inteiro.
oneOf Permite que o formulário de entrada do usuário exiba um nome amigável (título) para um valor menos amigável (const). Se definir um valor padrão, defina const, não o título.

Válido para uso com tipos de cadeia de caracteres, inteiro e número.

pattern Caracteres permitidos para entradas de cadeia de caracteres, na sintaxe de expressão regular.

Por exemplo, '[a-z]+' ou '[a-z0-9A-Z@#$]+'.

properties Declara a chave:bloco de propriedades de valor para objetos
readOnly Usado para fornecer apenas um rótulo de formulário.
title Usado com oneOf. O nome amigável para um valor const. O título aparece no formulário de entrada do usuário no momento da implantação.
type Tipo de dados de número, inteiro, cadeia de caracteres, boolean ou objeto.
Importante:

Um tipo booleano adiciona uma caixa de seleção em branco ao formulário de solicitação. Deixar a caixa desmarcada não torna a entrada Falso.

Para definir a entrada como Falso, os usuários devem marcar e limpar a caixa.

writeOnly Oculta os pressionamentos de teclas atrás de asteriscos no formulário. Não pode ser usado com enum. Aparece como um campo de senha em formulários personalizados do Service Broker.

Exemplos adicionais

Cadeia de caracteres com enumeração

  image:
    type: string
    title: Operating System
    description: The operating system version to use.
    enum:
      - ubuntu 16.04
      - ubuntu 18.04
    default: ubuntu 16.04

  shell:
    type: string
    title: Default shell
    Description: The default shell that will be configured for the created user.
    enum:
      - /bin/bash
      - /bin/sh

Inteiro com mínimo e máximo

  count:
    type: integer
    title: Machine Count
    description: The number of machines that you want to deploy.
    maximum: 5
    minimum: 1
    default: 1

Matriz de objetos

  tags:
    type: array
    title: Tags
    description: Tags that you want applied to the machines.
    items:
      type: object
      properties:
        key:
          type: string
          title: Key
        value:
          type: string
          title: Value

Cadeia de caracteres com nomes amigáveis

  platform:
    type: string
    oneOf:
      - title: AWS
        const: platform:aws
      - title: Azure
        const: platform:azure
      - title: vSphere
        const: platform:vsphere
    default: platform:aws

Cadeia de caracteres com validação de padrão

  username:
    type: string
    title: Username
    description: The name for the user that will be created when the machine is provisioned.
    pattern: ^[a-zA-Z]+$

Cadeia de caracteres como senha

  password:
    type: string
    title: Password
    description: The initial password that will be required to logon to the machine. Configured to reset on first login.
    encrypted: true
    writeOnly: true

Cadeia de caracteres como área de texto

  ssh_public_key:
    type: string
    title: SSH public key
    maxLength: 256

Boolean

  public_ip:
    type: boolean
    title: Assign public IP address
    description: Choose whether your machine should be internet facing.
    default: false

Seletor de calendário de data e hora

  leaseDate:
    type: string
    title: Lease Date
    format: date-time