パラメーターの条件
スタイルブックの定義では、パラメーターはスタイルブックのユーザーが構成パックを作成するために提供する入力を定義します。パラメーターの動作を次のように変更したい場合があります。
- 条件が満たされた場合にのみ、一部のパラメーターをユーザーに表示
- あるパラメーターの許可される値が別のパラメーターに依存
- 特定の条件下でのみパラメーターを必須として設定
これらの場合、parameters-conditions
セクションを使用してパラメーターの条件を定義します。パラメーターの条件には、次の属性があります。
-
target
: 条件を適用するパラメーターを指定 -
action
: ターゲットパラメーターが条件に一致した場合に実行するアクションを指定。この機能は次のアクションをサポート -
condition
: 満たす必要がある条件を指定 -
value
: アクションに応じてターゲットパラメーターの属性の値を設定
注
現在、パラメーターの条件はリストオブジェクト内のパラメーターには適用できません。
「表示」または「非表示」
アクションが 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 プロトコルを選択すると、ポート値が動的に入力されます。そして、これはリスト内の各ロードバランシング仮想サーバーに適用されます。