クラウド テンプレート デザイナは、入力パラメータを使用して、ユーザーが申請時にカスタム選択を行えるようにできます。

入力の仕組み

ユーザーが入力するようにすると、違いのわずかなテンプレートの複数のコピーを保存する必要がなくなります。また、入力する場合は、インストール後の作業に対応したテンプレートを準備できます。vRealize Automation の Day 2 更新でクラウド テンプレートの入力を使用する方法を参照してください。

次の入力は、1 つのクラウド テンプレートを 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. property-name } 構文を使用して入力パラメータを参照します。

プロパティ名にスペースが含まれている場合は、ドット表記を使用するのではなく、次のように角括弧と二重引用符で囲みます。${input["プロパティ名"]}

重要: クラウド テンプレート コードでは、入力パラメータを指す目的以外に input という語を使用することはできません。
resources:
  WebTier:
    type: Cloud.Machine
    properties:
      name: wordpress
      flavor: '${input.wp-size}'
      image: '${input.wp-image}'
      count: '${input.wp-count}'

ネストされた入力

入力を整理または分類する場合は、ネストされた入力を使用できます。次の例では、CPU とメモリは 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 セクションでネストされた入力を参照するには、パスに親を含めます。

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 アクションでは、クラウド テンプレート コードに直接入力するよりも、入力フォームを使用する方が簡単です。

  1. vRealize Automation と統合された vRealize Orchestrator インスタンスで、必要なアクションが存在することを確認します。
  2. Cloud Assembly のクラウド テンプレート デザイン画面で、[入力] タブに移動し、クリックして新しい入力を追加します。
  3. タイプを選択し、[外部ソース] を選択します。
  4. [アクション] の横にある [選択] ボタンをクリックします。
  5. [アクション] 検索フィールドを使用して、vRealize Orchestrator アクションを特定し、選択します。
  6. アクション パラメータを入力するか、選択します。

入力を保存して作成すると、クラウド テンプレート コードに $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 文字までに制限するには、 maxLength: 25 と入力します。

maximum 数値または整数の場合に許容される最大値。
minItems アレイ内の選択可能な項目の最小数。
minLength 文字列の場合に許容される最小文字数。
minimum 数値または整数の場合に許容される最小値。
oneOf ユーザー入力フォームでわかりにくい値 (const) をわかりやすい名前(タイトル)で表示できるようにします。デフォルト値を設定する場合は、タイトルではなく、定数を設定します。

文字列、整数、および数値のタイプとともに使用します。

pattern 正規表現の構文で表した、文字列入力に使用可能な文字。

例:'[a-z]+' または '[a-z0-9A-Z@#$]+'

properties オブジェクトの key:value プロパティ ブロックを宣言します。
readOnly フォーム ラベルのみを指定する際に使用されます。
title oneOf とともに使用されます。定数値のわかりやすい名前。タイトルは、展開時にユーザー入力フォームに表示されます。
type 数値、整数、文字列、ブール値、またはオブジェクトを表すデータ タイプ。
重要:

ブール値タイプでは、申請フォームに空白のチェックボックスが追加されます。ボックスをそのままの状態にしておいても、入力は False になりません。

入力を False に設定するには、ボックスにチェックを入れてからクリアする必要があります。

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