StyleBookの設定

パラメーターの条件

スタイルブックの定義では、パラメーターはスタイルブックのユーザーが構成パックを作成するために提供する入力を定義します。パラメーターの動作を次のように変更したい場合があります。

  • 条件が満たされた場合にのみ、一部のパラメーターをユーザーに表示
  • あるパラメーターの許可される値が別のパラメーターに依存
  • 特定の条件下でのみパラメーターを必須として設定

これらの場合、parameters-conditions セクションを使用してパラメーターの条件を定義します。パラメーターの条件には、次の属性があります。

現在、パラメーターの条件はリストオブジェクト内のパラメーターには適用できません。

「表示」または「非表示」

アクションが show で、指定された条件が True を返すと、ターゲットパラメーターが GUI に表示されます。

アクションが hide で、指定された条件が True を返すと、ターゲットパラメーターが GUI から非表示になります。

:

parameters-conditions:
  -
   target: $parameters.security-settings.cert-details
   action: show
   condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->

最初、security-settings パラメーターの証明書の詳細は非表示になっています。ユーザーが SSL または SSL-Bridge プロトコルを選択すると、証明書の詳細が表示されます。

「デフォルト値の設定」

アクションが set-default で、指定された条件が True を返すと、ターゲットパラメーターの値がデフォルト値に設定されます。

例 1:

parameters-conditions:
  -
   target: $parameters.port
   action: set-default
   condition: $parameters.protocol == "SSL"
   value: 443
  -
   target: $parameters.port
   action: set-default
   condition: $parameters.protocol != "SSL"
   value: 80
<!--NeedCopy-->

例 2:

parameters-conditions:
  -
   target: $parameters.port
   action: set-default
   value: if-then-else($parameters.protocol == "SSL", 443, 80)
<!--NeedCopy-->

ユーザーが SSL プロトコルを選択すると、デフォルトのポート値が 443 に設定されます。他のプロトコルの場合、デフォルトのポート値は 80 に設定されます。例 1 と例 2 は同じ結果になります。

「必須フィールドの設定」

アクションが set-required で、指定された条件が True を返すと、ターゲットパラメーターは構成パックを作成するための必須フィールドになります。

parameters-conditions:
  -
   target: $parameters.security-settings.cert-details
   action: set-required
   condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->

最初、security-settings パラメーターの証明書の詳細は必須ではない場合があります。ユーザーが SSL または SSL-Bridge プロトコルを選択すると、証明書の詳細は構成パックを作成するための必須フィールドになります。

「許可される値の設定」

アクションが set-allowed-values で、指定された条件が True を返すと、ターゲットパラメーターは指定された値のみを選択できるようになります。

例 1:

parameters-conditions:
  -
   target: $parameters.app-name
   action: set-allowed-values
   value:
    -  "SSL"
   condition: $parameters.lb-virtual-port ==  443
<!--NeedCopy-->

ユーザーがロードバランサーの仮想ポートとして 443 を指定すると、アプリケーション名では SSL オプションのみが許可されます。

例 2:

parameters:
    -
      name: root-certificates
      label: "Root Certificates"
      type: object[]
      parameters:
        -
          name: certkey-name
          label: "SSL Root CertKey Name"
          type: string
          required: true
    -
      name: im-certificates
      label: "Intermediate Certificates"
      type: object[]
      parameters:
        -
          name: certkey-name
          label: "Name of Intermediate CertKey"
          type: string
          required: true
        -
          name: link-options
          label: "Link to Root or Intermediate CertKey?"
          type: string
          allowed-values:
            -  Root
            -  Intermediate
          default: Root
          required: true
        -
          name: link-certkey
          label: "Linked to Root/Intermediate CertKey Name"
          type: string
          required: true
parameters-conditions:
  -
    repeat: $parameters.im-certificates
    repeat-item: imcert
    parameters-conditions:
    -
      target: $imcert.link-certkey
      action: set-allowed-values
      condition: $imcert.link-options == "Root"
      value: $parameters.root-certificates[*].certkey-name
    -
      target: $imcert.link-certkey
      action: set-allowed-values
      condition: $imcert.link-options == "Intermediate"
      value: $parameters.im-certificates[*].certkey-name
<!--NeedCopy-->

この例は、SSL 証明書の値を設定する方法についてです。パラメーター条件の repeat 構造は、すべての中間証明書 (im-certificates) を反復処理し、各証明書の link-options パラメーターをチェックします。

link-options パラメーターが特定の値に一致する場合、link-certkey パラメーターの許可される値がそれぞれの証明書リストに追加されます。

たとえば、link-options パラメーターが Root の場合、link-certkey パラメーターの許可される値は root-certificate リストに追加されます。

証明書をリストに追加するには、次の表記が使用されます。

  • ルート証明書の場合:

     $parameters.root-certificates[*].certkey-name
     <!--NeedCopy-->
    
  • 中間証明書の場合:

     $parameters.im-certificates[*].certkey-name
     <!--NeedCopy-->
    

「ラベルの設定」

アクションが set-label で、指定された条件が True を返すと、ターゲットパラメーターのラベルが指定されたテキストに変更されます。

:

parameters-conditions:
  -
   target: $parameters.app-name
   action: set-label
   value: if-then-else($parameters.lb-service-type == "TCP", "TCPApp","UDPApp")
<!--NeedCopy-->

ユーザーがロードバランサープロトコルとして TCP を選択すると、アプリケーションのラベルが TCPApp に変更されます。ユーザーが別のオプションを選択すると、アプリケーションのラベルが UDPApp に変更されます。

「説明の設定」

アクションが set-description で、指定された条件が True を返すと、ターゲットパラメーターの説明が指定されたテキストに変更されます。この説明は、ターゲットパラメーターのツールチップに表示されます。

:

parameters-conditions:
  -
   target: $parameters.app-name
   action: set-description
   value: if-then-else($parameters.lb-service-type == "TCP", "Select a TCP application name","Select a UDP application name")
<!--NeedCopy-->

ユーザーがロードバランサープロトコルとして TCP を選択すると、アプリケーションのツールチップに「Select a TCP application name」というテキストが表示されます。ユーザーが別のオプションを選択すると、アプリケーションの説明に「Select a UDP application name」と表示されます。

「ペインの折りたたみ」または「ペインの展開」

アクションが collapse-pane で、指定された条件が True を返すと、ターゲットパラメーターのペインが GUI で折りたたまれます。

アクションが expand-pane で、指定された条件が True を返すと、ターゲットパラメーターのペインが GUI で展開されます。

:

parameters-conditions:
  -
    target: $parameters.security-settings.cert-details
    action: expand-pane
    condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
<!--NeedCopy-->

最初、security-settings パラメーターの証明書の詳細ペインは展開されていない場合があります。ユーザーが SSL または SSL-Bridge プロトコルを選択すると、証明書の詳細ペインが GUI で展開されます。

「パターンの設定」

アクションが set-pattern で、指定された条件が True を返すと、ターゲットパラメーターフィールドは指定されたパターンに設定されます。

:

parameters-conditions:
  -
    target: $parameters.app-name
    action: set-pattern
    value: "[a-z]+"
<!--NeedCopy-->

この例では、アプリケーション名には小文字のアルファベットのみが許可されます。

ネストされたパラメーターの条件

スタイルブックの定義では、パラメーター条件内にパラメーター条件を指定できます。これらの条件はネストされたパラメーター条件と呼ばれ、repeat 構造を使用してこれらの条件を定義します。ネストされたパラメーター条件は、あるパラメーターから別のパラメーターにアクションを適用したい場合に役立ちます。

:

parameters-conditions:
  -
    repeat: $parameters.lbvservers
    repeat-item: lbvserver
    parameters-conditions:
      -
        target: $lbvserver.port
        action: set-allowed-values
        condition: $lbvserver.protocol == "HTTPS"
        value: $parameters.ssl-ports
<!--NeedCopy-->

この例では、ユーザーがロードバランシング仮想サーバーの HTTPS プロトコルを選択すると、ポート値が動的に入力されます。そして、これはリスト内の各ロードバランシング仮想サーバーに適用されます。

パラメーターの条件