Разработчики облачных шаблонов могут использовать входные параметры, чтобы пользователи могли самостоятельно выбирать настройки при отправке запроса.
Принципы работы входных данных
Теперь, когда пользователи вводят свои входные данные, разработчикам больше не нужно сохранять огромное количество незначительно различающихся облачных шаблонов. Кроме того, входные данные могут подготавливать шаблон для операций по регулярному обслуживанию. См. раздел Использование входных данных облачного шаблона для обновлений при регулярном обслуживании 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 проще, чем печатая непосредственно в коде облачного шаблона.
- Убедитесь, что необходимое действие существует в экземпляре vRealize Orchestrator, интегрированном с vRealize Automation.
- На странице проекта облачного шаблона в Cloud Assembly перейдите на вкладку Входные данные и щелкните, чтобы добавить новые входные данные.
- Выберите тип и укажите Внешний источник.
- Нажмите кнопку Выбрать рядом с действием.
- Используйте поле для поиска действий, чтобы найти и выбрать действие vRealize Orchestrator.
- Введите или выберите параметры действия.
После сохранения и создания входные данные появятся в коде облачного шаблона как входные данные $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 символами, введите |
maximum | Наибольшее допустимое значение числа или целого числа. |
minItems | Минимальное количество выбираемых элементов в массиве. |
minLength | Минимальное разрешенное количество символов в строке. |
minimum | Наименьшее допустимое значение для числа или целого числа. |
oneOf | Позволяет отображать понятное имя (title) вместо менее понятного значения (const) в форме для ввода пользовательских данных. При задании значения по умолчанию следует указывать const, а не title. Допустимо для использования с данными следующих типов: строка, целое число и число. |
pattern | Допустимые символы для ввода строковых данных в виде регулярного выражения. Например, |
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