Il progettista di modelli cloud usa i parametri di input in modo che gli utenti possano effettuare selezioni personalizzate al momento della richiesta.

Funzionamento degli input

Quando gli utenti forniscono input, non è più necessario salvare più copie del modello che sono solo leggermente diverse. Inoltre, gli input possono preparare un modello per le operazioni giorno 2. Vedere Come utilizzare gli input del modello cloud per gli aggiornamenti giorno 2 di vRealize Automation.

I seguenti input illustrano come creare un modello cloud per un server di database MySQL in cui gli utenti possono distribuire tale modello in ambienti di risorse cloud diversi e applicare ogni volta capacità e credenziali diverse.

Variabili di input

Aggiunta di parametri di input

Aggiungere una sezione inputs al codice del modello in cui impostare valori selezionabili.

Nell'esempio seguente è possibile selezionare le dimensioni della macchina, il sistema operativo e il numero di server in cluster.

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 non si è sicuri di come modificare il codice, è possibile fare clic sulla scheda Input dell'editor di codice e immettere le impostazioni in tale scheda. L'esempio seguente illustra alcuni input per il database MySQL menzionato in precedenza.

Scheda Input

Riferimenti ai parametri di input

Successivamente, nella sezione resources, fare riferimento a un parametro di input utilizzando la sintassi ${input.property-name}.

Se un nome di proprietà include uno spazio, delimitarlo con parentesi quadre e virgolette doppie anziché utilizzare la notazione dei punti: ${input["property name"]}

Importante: Nel codice del modello cloud non è possibile utilizzare la parola input se non per indicare un parametro di input.
resources:
  WebTier:
    type: Cloud.Machine
    properties:
      name: wordpress
      flavor: '${input.wp-size}'
      image: '${input.wp-image}'
      count: '${input.wp-count}'

Input nidificato

Se si desidera organizzare o classificare gli input, l'input nidificato è supportato. Nell'esempio seguente, la CPU e la memoria sono insieme sotto l'intestazione principale di livello.

Nota: Un gruppo di input nidificati è diverso dalla creazione e dal riferimento a un gruppo di proprietà formale.
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

Nella sezione risorse, per fare riferimento all'input nidificato, includere l'elemento principale nel percorso.

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}

Input facoltativo e obbligatorio

Per tutti i tipi ad eccezione di Booleano, l'immissione dell'utente è facoltativa per impostazione predefinita. Per richiedere l'input, eseguire una delle seguenti operazioni:

  • Impostare un valore predefinito.
  • Quando non sono presenti input nidificati, aggiungere la proprietà populateRequiredOnNonDefaultProperties:
    inputs:
      cluster:
        type: integer
        populateRequiredOnNonDefaultProperties: true
        title: Cluster
        minimum: 1
        maximum: 4

    Si noti che è possibile applicare questa impostazione anche quando si fa riferimento a un gruppo di proprietà formale:

    inputs:
      pgmachine:
        type: object
        populateRequiredOnNonDefaultProperties: true
        $ref: /ref/property-groups/machine
  • Con gli input nidificati, aggiungere la proprietà 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

    Si noti che è possibile applicare questa impostazione anche quando un riferimento a un gruppo di proprietà formale è nidificato:

      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

Input facoltativo: per forzare l'input a rimanere facoltativo, impostare un valore predefinito vuoto utilizzando i segni di spunta:

owner:
  type: string
  minLength: 0
  maxLength: 30
  title: Owner Name
  description: Account Owner
  default: ''
Input facoltativo

Elenco delle proprietà di input

Proprietà Descrizione
const Utilizzata con oneOf. Valore reale associato al titolo descrittivo.
default Valore precompilato per l'input.

Il valore predefinito deve essere di tipo corretto. Non immettere una parola come valore predefinito per un numero intero.

description Testo della guida dell'utente per l'input.
encrypted

Indica se crittografare l'input inserito dall'utente. Può essere true o false.

Le password sono in genere crittografate.

È inoltre possibile creare proprietà crittografate riutilizzabili in più modelli cloud. Vedere Proprietà di Cloud Assembly segrete.

enum Menu a discesa di valori consentiti.

Utilizzare l'esempio seguente come guida per il formato.

enum:
      - value 1
      - value 2
format Imposta il formato previsto per l'input. Ad esempio, (25/04/19) supporta data-ora.

Consente di utilizzare il selettore della data nei moduli personalizzati di Service Broker.

items Dichiara gli elementi all'interno di una matrice. Supporta numeri, numeri interi, stringhe, valori booleani o oggetti.
maxItems Numero massimo di elementi selezionabili in una matrice.
maxLength Numero massimo di caratteri consentiti per una stringa.

Ad esempio, per fare in modo che un campo non contenga più di 25 caratteri, immettere maxLength: 25.

maximum Valore massimo consentito per un numero o un numero intero.
minItems Numero minimo di elementi selezionabili in una matrice.
minLength Numero minimo di caratteri consentiti per una stringa.
minimum Valore minimo consentito per un numero o un numero intero.
oneOf Consente al modulo di input dell'utente di visualizzare un nome descrittivo (title) per un valore meno descrittivo (const). Se si imposta un valore predefinito, specificare const, non title.

Valida per l'uso con i tipi stringa, numero intero e numero.

pattern Caratteri consentiti per gli input stringa nella sintassi delle espressioni regolari.

Ad esempio '[a-z]+' o '[a-z0-9A-Z@#$]+'.

properties Dichiara il blocco delle proprietà key:value per gli oggetti.
readOnly Utilizzata per fornire solo un'etichetta del modulo.
title Utilizzata con oneOf. Nome descrittivo per un valore const. Il titolo viene visualizzato nel modulo di input dell'utente al momento della distribuzione.
type Tipo di dati numero, numero intero, stringa, booleano o oggetto.
Importante:

Un tipo booleano aggiunge una casella di controllo vuota al modulo di richiesta Se si lascia invariata la casella, l'input non viene impostato su False.

Per impostare l'input su False, gli utenti devono selezionare e deselezionare la casella.

writeOnly Sostituisce le pressioni dei tasti con asterischi nel modulo. Non può essere utilizzata con enum. Viene visualizzata come campo della password nei moduli personalizzati di Service Broker.

Altri esempi

Stringa con enumerazione

  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

Numero intero con minimo e massimo

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

Matrice di oggetti

  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

Stringa con nomi descrittivi

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

Stringa con convalida del pattern

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

Stringa come password

  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

Stringa come area di testo

  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

Selettore calendario data e ora

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