Разработчики облачных шаблонов могут использовать входные параметры, чтобы пользователи могли самостоятельно выбирать настройки при отправке запроса.

Принципы работы входных данных

Теперь, когда пользователи вводят свои входные данные, разработчикам больше не нужно сохранять огромное количество незначительно различающихся облачных шаблонов. Кроме того, входные данные могут подготавливать шаблон для операций по регулярному обслуживанию. См. раздел Использование входных данных облачного шаблона для обновлений при регулярном обслуживании vRealize Automation.

Следующие входные данные показывают, как можно создать один облачный шаблон для сервера базы данных MySQL, где пользователи смогут выполнять развертывание этого облачного шаблона в разных средах облачных ресурсов и каждый раз применять различный объем ресурсов и различные учетные данные.

Входные переменные

Добавление входных параметров

Добавьте раздел inputs в код шаблона, где задаются выбираемые значения.

В следующем примере в качестве выбираемых значений используется размер компьютера, операционная система и число кластерных серверов.

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)

Если вам неудобно редактировать код, можно перейти на вкладку Входные данные в редакторе кода и там настроить параметры. В следующем примере показаны некоторые входные данные для базы данных MySQL, упомянутой выше.

Вкладка «Входные данные»

Ссылки на входные параметры

Затем в разделе resources создайте ссылку на входной параметр, используя синтаксис ${input.свойство-имя}.

Если имя свойства содержит пробелы, вместо использования нотации с точкой используйте квадратные скобки и двойные кавычки: ${input["имя свойства"]}

Важно!: Слово input может использоваться в коде облачных шаблонов только для указания входных параметров.
resources:
  WebTier:
    type: Cloud.Machine
    properties:
      name: wordpress
      flavor: '${input.wp-size}'
      image: '${input.wp-image}'
      count: '${input.wp-count}'

Вложенные входные данные

Для упорядочивания и классификации входных данных поддерживается их вложенность. В следующем примере ЦП и память находятся под родительским заголовком level.

Примечание: Группа вложенных входных данных отличается от создания группы свойств формы и использования ссылки на нее.
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

При создании ссылки на вложенные входные данные в разделе Ресурсы в пути должен быть указан родительский элемент.

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}

Необязательные и обязательные входные данные

Для всех типов, кроме логических, входные данные пользователя по умолчанию не являются обязательными. Чтобы сделать ввод данных обязательным, выполните одно из следующих действий.

  • Задайте значение по умолчанию.
  • Если вложенных входных данных нет, добавьте свойство populateRequiredOnNonDefaultProperties.
    inputs:
      cluster:
        type: integer
        populateRequiredOnNonDefaultProperties: true
        title: Cluster
        minimum: 1
        maximum: 4

    Обратите внимание, что этот параметр также можно применить при использовании ссылки на группу свойств формы.

    inputs:
      pgmachine:
        type: object
        populateRequiredOnNonDefaultProperties: true
        $ref: /ref/property-groups/machine
  • При использовании вложенных входных данных добавьте свойство 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

    Обратите внимание, что этот параметр также можно применить, если ссылка на группу свойств формы является вложенной.

      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

Необязательные входные данные. Чтобы принудительно оставить ввод необязательным, задайте пустое значение по умолчанию (одинарные кавычки).

owner:
  type: string
  minLength: 0
  maxLength: 30
  title: Owner Name
  description: Account Owner
  default: ''
Необязательные входные данные

Отправка входных данных в vRealize Orchestrator

Для передачи входных данных облачного шаблона в действие vRealize Orchestrator выполните следующее. Управлять формой для ввода данных с помощью действий vRealize Orchestrator проще, чем печатая непосредственно в коде облачного шаблона.

  1. Убедитесь, что необходимое действие существует в экземпляре vRealize Orchestrator, интегрированном с vRealize Automation.
  2. На странице проекта облачного шаблона в Cloud Assembly перейдите на вкладку Входные данные и щелкните, чтобы добавить новые входные данные.
  3. Выберите тип и укажите Внешний источник.
  4. Нажмите кнопку Выбрать рядом с действием.
  5. Используйте поле для поиска действий, чтобы найти и выбрать действие vRealize Orchestrator.
  6. Введите или выберите параметры действия.

После сохранения и создания входные данные появятся в коде облачного шаблона как входные данные $dynamicDefault. Например:

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

Список входных свойств

Свойство Описание
const Используется с oneOf. Реальное значение, связанное с понятным заголовком.
default Предварительно заполненное значение для входных данных.

Значение по умолчанию должно иметь допустимый тип. Не вводите слово в качестве значения по умолчанию там, где нужно ввести целое число.

description Текст справки по входным данным для пользователя.
encrypted

Указывает, следует ли шифровать вводимые пользователем данные (true или false).

К данным, которые обычно шифруются, относятся пароли.

Также можно создать зашифрованные свойства, которые можно повторно использовать в нескольких облачных шаблонах. См. раздел Секретные свойства Cloud Assembly.

enum Раскрывающийся список разрешенных значений.

Используйте следующий пример в качестве инструкции по формату.

enum:
      - value 1
      - value 2
format Задает ожидаемый формат входных данных. Например, формат (25/04/19) поддерживает ввод даты и времени.

Позволяет использовать управляющий элемент выбора даты в настраиваемых формах Service Broker.

items Объявляет элементы в массиве. Поддерживаемые значения: число, целое число, строка, логическое значение или объект.
maxItems Максимальное количество выбираемых элементов в массиве.
maxLength Максимальное разрешенное количество символов в строке.

Например, чтобы ограничить размер поля 25 символами, введите maxLength: 25.

maximum Наибольшее допустимое значение числа или целого числа.
minItems Минимальное количество выбираемых элементов в массиве.
minLength Минимальное разрешенное количество символов в строке.
minimum Наименьшее допустимое значение для числа или целого числа.
oneOf Позволяет отображать понятное имя (title) вместо менее понятного значения (const) в форме для ввода пользовательских данных. При задании значения по умолчанию следует указывать const, а не title.

Допустимо для использования с данными следующих типов: строка, целое число и число.

pattern Допустимые символы для ввода строковых данных в виде регулярного выражения.

Например, '[a-z]+' или '[a-z0-9A-Z@#$]+'.

properties Объявляет блок свойств key:value для объектов.
readOnly Используется только для пометки формы.
title Используется с oneOf. Понятное имя для значения const. Этот заголовок отображается в форме для ввода пользовательских данных во время развертывания.
type Тип данных: число, целое число, строка, логическое значение или объект.
Важно!:

Логическое значение добавляет пустой флажок в форму запроса. Если оставить поле нетронутым, для входных данных не будет задано значение «ложь».

Чтобы задать для входных данных значение «ложь», необходимо проверить, а затем очистить поле.

writeOnly Заменяет введенные в форму символы звездочками. Нельзя использовать в сочетании с enum. Отображается в настраиваемых формах Service Broker как поле для ввода пароля.

Дополнительные примеры

Строка с перечислением

  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

Целое число с минимальным и максимальным значениями

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

Массив объектов

  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

Строка с понятными именами

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

Строка с проверкой шаблона

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

Строка как пароль

  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

Строка как текстовая область

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

Логическое значение

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

Селектор даты и времени в календаре

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