Como desarrollador de plantillas de nube, debe utilizar los parámetros de entrada para que los usuarios puedan seleccionar opciones personalizadas en el momento de la solicitud.
Funcionamiento de las entradas
Cuando los usuarios proporcionan entradas, ya no es necesario guardar varias copias de las plantillas que solo son apenas diferentes. Además, las entradas pueden preparar una plantilla para las operaciones del día 2. Consulte Cómo utilizar entradas de plantilla de nube en las actualizaciones del día 2 de vRealize Automation.
Las siguientes entradas muestran cómo puede crear una plantilla de nube para un servidor de base de datos MySQL, donde los usuarios pueden implementar esa plantilla en diferentes entornos de recursos de nube y aplicar diferentes capacidades y credenciales cada vez.
Agregar parámetros de entrada
Agregue una sección de inputs
a su código de plantilla de nube, donde establece los valores seleccionables.
En el siguiente ejemplo, se pueden seleccionar el tamaño de la máquina, el sistema operativo y el número de servidores agrupados en clúster.
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)
Si no se siente cómodo editando código, puede hacer clic en la pestaña Entradas del editor de código e introducir la configuración allí. El siguiente ejemplo muestra algunas entradas para la base de datos MySQL que se mencionó anteriormente.
Referencia a parámetros de entrada
A continuación, en la sección resources
, haga referencia a un parámetro de entrada mediante la sintaxis ${input.property-name}
.
Si el nombre de una propiedad incluye un espacio, delimite con corchetes y comillas dobles en lugar de utilizar la notación de punto: ${input[" nombre de propiedad "]}
input
excepto para indicar un 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 anidada
Si desea organizar o categorizar entradas, se admite la entrada anidada. En el siguiente ejemplo, la CPU y la memoria se encuentran juntas bajo un encabezado principal de nivel.
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
En la sección Recursos, para hacer referencia a la entrada anidada, incluya el elemento principal en la ruta de acceso.
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 frente a entrada obligatoria
Para todos los tipos excepto booleano, la entrada del usuario es opcional de forma predeterminada. Para exigir una entrada, lleve a cabo uno de los siguientes pasos:
- Establezca un valor predeterminado.
- Cuando no tenga entradas anidadas, agregue la propiedad
populateRequiredOnNonDefaultProperties
:inputs: cluster: type: integer populateRequiredOnNonDefaultProperties: true title: Cluster minimum: 1 maximum: 4
Tenga en cuenta que también puede aplicar esta opción al hacer referencia a un grupo de propiedades formales:
inputs: pgmachine: type: object populateRequiredOnNonDefaultProperties: true $ref: /ref/property-groups/machine
- Con las entradas anidadas, agregue la propiedad
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
Tenga en cuenta que también puede aplicar esta opción cuando se anida una referencia de grupo de propiedades formales:
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 forzar que la entrada siga siendo opcional, establezca un valor predeterminado vacío con marcas de verificación:
owner: type: string minLength: 0 maxLength: 30 title: Owner Name description: Account Owner default: ''
Lista de propiedades de entrada
Propiedad | Descripción |
---|---|
const | Se usa con oneOf. El valor real asociado al título descriptivo. |
default | Valor rellenado previamente para la entrada. El valor predeterminado debe ser del tipo correcto. No introduzca una palabra como valor predeterminado para un entero. |
description | Texto de ayuda del usuario para la entrada. |
encrypted | Establece si se cifrará la entrada que introduce el usuario, como true o false. Las contraseñas suelen estar cifradas. También puede crear propiedades cifradas que se puedan reutilizar en varias plantillas de nube. Consulte Propiedades secretas de Cloud Assembly. |
enum | Menú desplegable de valores permitidos. Utilice el siguiente ejemplo como guía de formato. enum: - value 1 - value 2 |
format | Establece el formato esperado de la entrada. Por ejemplo, (25/04/19) admite fecha y hora. Permite utilizar el selector de fecha en los formularios personalizados de Service Broker. |
items | Declara elementos dentro de una matriz. Admite número, entero, cadena, booleano u objeto. |
maxItems | Cantidad máxima de elementos que pueden seleccionarse dentro de una matriz. |
maxLength | Número máximo de caracteres permitido para una cadena. Por ejemplo, introduzca |
maximum | Valor máximo permitido para un número o un entero. |
minItems | Cantidad mínima de elementos que pueden seleccionarse dentro de una matriz. |
minLength | Número mínimo de caracteres permitido para una cadena. |
minimum | Valor mínimo permitido para un número o un entero. |
oneOf | Permite que el formulario de entrada del usuario muestre un nombre descriptivo (title) para un valor menos descriptivo (const). Si se configura un valor predeterminado, defina const en lugar de title. Puede utilizarse con los tipos cadena, entero y número. |
pattern | Caracteres permitidos para entradas de cadena, en la sintaxis de expresión regular. Por ejemplo, |
properties | Declara el bloque de propiedades key:value de los objetos. |
readOnly | Se utiliza únicamente para proporcionar una etiqueta de formulario. |
title | Se usa con oneOf. El nombre descriptivo de un valor de const. La propiedad title aparece en el formulario de entrada del usuario en el momento de la implementación. |
type | Tipo de datos: número, entero, cadena, booleano u objeto.
Importante:
Un tipo booleano agrega una casilla de verificación en blanco al formulario de solicitud. Si deja el cuadro intacto, no hará que la entrada sea False. Para establecer la entrada en False, los usuarios deben activar y desactivar la casilla. |
writeOnly | Utiliza asteriscos para ocultar las pulsaciones de teclas en el formulario. No se puede utilizar con enum. Aparece como un campo de contraseña en los formularios personalizados de Service Broker. |
Ejemplos adicionales
Cadena con enumeración
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
Entero con valor mínimo y 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
Cadena con nombres descriptivos
platform: type: string oneOf: - title: AWS const: platform:aws - title: Azure const: platform:azure - title: vSphere const: platform:vsphere default: platform:aws
Cadena con validación de patrones
username: type: string title: Username description: The name for the user that will be created when the machine is provisioned. pattern: ^[a-zA-Z]+$
Cadena como contraseña
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
Cadena como área de texto
ssh_public_key: type: string title: SSH public key maxLength: 256
Booleano
public_ip: type: boolean title: Assign public IP address description: Choose whether your machine should be internet facing. default: false
Selector de calendario de fecha y hora
leaseDate: type: string title: Lease Date format: date-time