En tant que développeur de modèle de cloud, vous utilisez des paramètres d'entrée pour que les utilisateurs puissent effectuer des sélections personnalisées au moment de la demande.

Fonctionnement des entrées

Lorsque les utilisateurs fournissent des entrées, vous n'avez plus besoin d'enregistrer plusieurs copies de modèle qui sont légèrement différentes. En outre, les entrées peuvent préparer un modèle pour les opérations de jour 2. Reportez-vous à la section Utilisation d'entrées de modèle de cloud pour les mises à jour de jour 2 de vRealize Automation.

Les entrées suivantes vous présentent comment créer un modèle de cloud pour un serveur de base de données MySQL, où les utilisateurs peuvent déployer ce modèle de cloud dans différents environnements de ressources de cloud et appliquer chaque fois une capacité et des informations d'identification différentes.

Variables d'entrée

Ajout de paramètres d'entrée

Ajoutez une section inputs au code de votre modèle de cloud, où vous définissez les valeurs sélectionnables.

Dans l'exemple suivant, la taille de la machine, le système d'exploitation et le nombre de serveurs en cluster sont sélectionnables.

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 vous ne souhaitez pas modifier le code, vous pouvez cliquer sur l'onglet Entrées de l'éditeur de code et y entrer les paramètres. L'exemple suivant présente plusieurs entrées pour la base de données MySQL mentionnée précédemment.

Onglet Entrées

Référencement des paramètres d'entrée

Ensuite, dans la section resources, vous devez référencer un paramètre d'entrée à l'aide de la syntaxe ${input.property-name}.

Si un nom de propriété inclut un espace, délimitez-le avec des crochets et des guillemets au lieu d'utiliser la notation par points : ${input["nom de propriété"]}

Important : Dans le code du modèle de cloud, vous ne pouvez pas utiliser le mot input, sauf pour indiquer un paramètre d'entrée.
resources:
  WebTier:
    type: Cloud.Machine
    properties:
      name: wordpress
      flavor: '${input.wp-size}'
      image: '${input.wp-image}'
      count: '${input.wp-count}'

Entrée imbriquée

Si vous souhaitez organiser ou classer les entrées, l'entrée imbriquée est prise en charge. Dans l'exemple suivant, le CPU et la mémoire se trouvent ensemble sous l'en-tête parent niveau.

Note : Un groupe d'entrées imbriquées est différent de la création et du référencement d'un groupe de propriétés formel.
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

Dans la section Ressources, pour référencer l'entrée imbriquée, incluez le parent dans le chemin d'accès.

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}

Entrée facultative ou obligatoire

Pour tous les types excepté booléen, l'entrée utilisateur est facultative par défaut. Pour exiger une entrée, effectuez l'une des actions suivantes :

  • Définissez une valeur par défaut.
  • Lorsque vous n'avez aucune entrée imbriquée, ajoutez la propriété populateRequiredOnNonDefaultProperties :
    inputs:
      cluster:
        type: integer
        populateRequiredOnNonDefaultProperties: true
        title: Cluster
        minimum: 1
        maximum: 4

    Notez que vous pouvez également appliquer ce paramètre lors du référencement d'un groupe de propriétés formel :

    inputs:
      pgmachine:
        type: object
        populateRequiredOnNonDefaultProperties: true
        $ref: /ref/property-groups/machine
  • Avec les entrées imbriquées, ajoutez la propriété 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

    Notez que vous pouvez également appliquer ce paramètre lorsque la référence à un groupe de propriétés formel est imbriquée :

      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

Entrée facultative : pour forcer la nature facultative de l'entrée, définissez une valeur par défaut vide à l'aide de coches :

owner:
  type: string
  minLength: 0
  maxLength: 30
  title: Owner Name
  description: Account Owner
  default: ''
Entrée facultative

Envoi d'entrées à vRealize Orchestrator

Pour fournir une entrée de modèle de cloud à une action vRealize Orchestrator, procédez comme suit. Avec les actions vRealize Orchestrator, le formulaire Entrées est plus facile à utiliser que la saisie directe dans le code du modèle de cloud.

  1. Dans l'instance de vRealize Orchestrator intégrée à vRealize Automation, vérifiez que l'action souhaitée existe.
  2. Sur la page de conception du modèle de cloud dans Cloud Assembly, accédez à l'onglet Entrées et cliquez dessus pour ajouter une nouvelle entrée.
  3. Sélectionnez un type, puis Source externe.
  4. En regard du champ Action, cliquez sur le bouton Sélectionner.
  5. Utilisez le champ de recherche Action pour localiser et sélectionner l'action vRealize Orchestrator.
  6. Entrez ou sélectionnez des paramètres d'action.

Une fois que vous avez enregistré et créé l'entrée, elle s'affiche dans le code du modèle de cloud en tant qu'entrée $dynamicDefault. Par exemple :

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

Liste des propriétés d'entrée

Propriété Description
const Utilisé avec oneOf. Valeur réelle associée au titre convivial.
default Valeur préremplie pour l'entrée.

Le type par défaut doit être correct. N'entrez pas de mot comme valeur par défaut d'un nombre entier.

description Texte d'aide de l'utilisateur pour l'entrée.
encrypted

Indique s'il convient de chiffrer l'entrée fournie par l'utilisateur, true ou false.

Les mots de passe sont généralement chiffrés.

Vous pouvez également créer des propriétés chiffrées réutilisables dans plusieurs modèles de cloud. Reportez-vous à la section Propriétés secrètes Cloud Assembly.

enum Menu déroulant des valeurs autorisées.

Utilisez l'exemple suivant comme guide en matière de format.

enum:
      - value 1
      - value 2
format Définit le format attendu pour l'entrée. Par exemple, (25/04/19) prend en charge la date et l'heure.

Permet l'utilisation du sélecteur de date dans les formulaires personnalisés Service Broker.

items Déclare des éléments dans un tableau. Prend en charge un nombre, un entier, une chaîne, une valeur booléenne ou un objet.
maxItems Nombre maximal d'éléments sélectionnables dans un tableau.
maxLength Nombre maximal de caractères autorisés pour une chaîne.

Par exemple, pour limiter un champ à 25 caractères, entrez maxLength: 25.

maximum Valeur la plus élevée autorisée pour un nombre ou un entier.
minItems Nombre minimal d'éléments sélectionnables dans un tableau.
minLength Nombre minimal de caractères autorisés pour une chaîne.
minimum Valeur la plus petite autorisée pour un nombre ou un entier.
oneOf Permet au formulaire de saisie d'utilisateur d'afficher un nom convivial (title) pour une valeur moins conviviale (const). Si vous définissez une valeur par défaut, définissez la constante, et non le titre.

Valide pour une utilisation avec des types chaîne, entier et nombre.

pattern Caractères autorisés pour les entrées de chaîne, dans la syntaxe d'expression régulière.

Par exemple, '[a-z]+' ou '[a-z0-9A-Z@#$]+'.

properties Déclare le bloc de propriétés key:value pour des objets.
readOnly Utilisé pour fournir une étiquette de formulaire uniquement.
title Utilisé avec oneOf. Nom convivial d'une valeur const. Le titre s'affiche dans le formulaire de saisie utilisateur au moment du déploiement.
type Type de données de nombre, d'entier, de chaîne, de valeur booléenne ou d'objet.
Important :

Un type booléen ajoute une case à cocher vide au formulaire de demande. Laisser la boîte intacte ne rend pas l'entrée False.

Pour définir l'entrée sur False, les utilisateurs doivent cocher, puis décocher la case.

writeOnly Masque la frappe par des astérisques dans le formulaire. Ne peut pas être utilisé avec enum. S'affiche sous forme de champ de mot de passe dans les formulaires personnalisés Service Broker.

Autres exemples

Chaîne avec énumération

  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

Nombre entier avec valeur minimale et valeur maximale

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

Tableau d'objets

  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

Chaîne avec noms conviviaux

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

Chaîne avec validation de modèle

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

Chaîne sous forme de mot de passe

  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

Chaîne sous forme de zone de texte

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

Valeur booléenne

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

Sélecteur de calendrier Date et heure

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