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 VMware Aria 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.

Variables de entrada

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.

Pestaña Entradas

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 "]}

Importante: En el código de plantilla de nube, no se puede utilizar la palabra 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.

Nota: Un grupo de entradas anidadas es diferente de crear y hacer referencia a un grupo de propiedades formales.
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: ''
Entrada opcional

Envió de entradas a VMware Aria Automation Orchestrator

Para proporcionar una entrada de plantilla de nube a una acción de VMware Aria Automation Orchestrator, realice los siguientes pasos. Con las acciones de VMware Aria Automation Orchestrator, el formulario Entradas es más fácil de usar que escribir directamente en el código de plantilla de nube.

  1. En la instancia de VMware Aria Automation Orchestrator integrada con VMware Aria Automation, compruebe que existe la acción que desea.
  2. En la página de diseño de plantilla de Automation Assembler vaya a la pestaña Entradas y haga clic para agregar una nueva entrada.
  3. Seleccione un tipo y seleccione Origen externo.
  4. Junto a Acción, haga clic en el botón Seleccionar.
  5. Utilice el campo de búsqueda Acción para localizar y seleccionar la acción de VMware Aria Automation Orchestrator.
  6. Introduzca o seleccione los parámetros de acción.

Después de guardar y crear la entrada, aparece en el código de plantilla de nube como una entrada $dynamicDefault. Por ejemplo:

inputs:
  backupnetwork:
    type: string
    $dynamicDefault: /data/vro-actions/com.insanpaolo/getBackupNetworkVLAN?network={{abcdef123456}}&tenant={{abcdef123456}}
Nota: Si el flujo de trabajo de VMware Aria Automation Orchestrator al que envía entradas se ejecuta durante demasiado tiempo y eso provoca un retraso de más de 30 segundos, se podrían producir problemas de límite de tiempo de espera en VMware Aria Automation.

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 Automation Assembler.

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 Automation 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 maxLength: 25 para limitar un campo a 25 caracteres.

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 agrega la propiedad predeterminado que se muestra arriba en esta tabla, establezca el valor predeterminado en un valor const, no en uno 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, '[a-z]+' o '[a-z0-9A-Z@#$]+'.

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 Automation 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