This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
式
StyleBookの最も強力な機能の1つは、式の使用です。さまざまなシナリオでStyleBookの式を使用して動的な値を計算できます。次の例は、パラメータ値をリテラル文字列と連結する式です。
例:
$parameters.appname + "-mon"
この式は、appname
という名前のパラメータを取得し、文字列-mon
と連結します。
次の種類の式がサポートされています。
算術式
- 加算 (+)
- 減算 (-)
- 乗算 (*)
- 除算 (/)
- モジュロ (%)
例:
- 2つの数字の加算:$parameters.a + $parameters.b
- 2つの数字の乗算:$parameters.a * 10
- ある数を別の数で除算した後の余りを見つける:
15%10
結果 5
文字列式
- 2 つの文字列を連結する (+)
例:
Concatenate two strings: str(“app-“) + $parameters.appname
式の一覧表示
2つのリスト(+)をマージします
例:
-
Concatenate two lists: $parameters.external-servers + $parameters.internal-servers
-
$parameters.ports-1
が[80, 81]であり、$parameters.port-2
が[81, 82]であるならば、$parameters.ports-1 + $parameters.ports-2
がリスト[80, 81, 81, 82]として表示されます 。
関係式
-
== : 2つのオペランドが等しいかどうかをテストし、それらが等しい場合はtrueを返し、それ以外の場合はfalseを返します。
-
! =: 2つのオペランドが異なるかどうかをテストし、それらが異なっている場合はtrueを返し、それ以外の場合はfalseを返します。
-
> : 最初のオペランドが2番目のオペランドより大きい場合はtrueを返し、それ以外の場合はfalseを返します。
-
>= : 最初のオペランドが2番目のオペランド以上の場合はtrueを返し、それ以外の場合はfalseを返します。
-
< : 最初のオペランドが2番目のオペランドより小さい場合はtrueを返し、それ以外の場合はfalseを返します。
-
<= : 最初のオペランドが2番目のオペランド以下の場合はtrueを返し、それ以外の場合はfalseを返します。
例:
- 等価演算子の使用:
$parameters.name = = "abcd"
- 不等式演算子の使用:
$parameters.name != "default"
-
他の関係演算子の例
10 > 9
10 >= 10
0 < 9
10 <= 9
10 == 10
10 != 1
論理式-ブール値
-
AND: 論理「and」演算子。両方のオペランドがtrueの場合、結果はtrueとなり、それ以外の場合はfalseとなります。
-
or: 論理 ‘or’ 演算子。いずれかのオペランドがtrueの場合、結果はtrueとなり、それ以外の場合はfalseとなります。
-
NOT: 単項演算子。オペランドが真の場合、結果は偽になり、逆になります。
-
in: 最初の引数が第2引数の部分文字列かどうかをテストします
-
in: 項目がリストの一部であるかどうかをテストします
注
文字列は(int()組み込み関数を使用して)数字に変換され、数字は(str()組み込み関数を使用して)文字列に変換される式を型キャストすることができます。同様に、
tcp-port
を数字にキャストすることができます(int()組み込み関数を使用して)、IPアドレスは(str()組み込み関数を使用して)文字列にキャストすることができます。演算子の前と後に区切り文字を使用します。区切り記号は次のように使えます。
演算子の前:
space
、tab
、comma
、(
、)
、[
、]
演算子の後:
space
、tab
、(
、[
次に例を示します:
abc + def
100 % 10
10 > 9
$item in $parameters.some-list
逐語的な文字列式
文字列内の特殊文字がリテラル形式を取る必要がある場合は、逐語的な文字列を使用できます。これらの文字列には、エスケープ文字、バックスラッシュ、引用符、括弧、空白、角かっこなどを含めることができます。逐語文字列では、特殊文字の通常の解釈はスキップされます。文字列内のすべての文字は、リテラル形式で保持されます。
StyleBooksでは、逐語的な文字列を使用して、Citrix ADCポリシー式をリテラル形式で含めることができます。通常、ポリシー式には特殊文字が含まれています。逐語的な文字列を使用しない場合、文字列を部分文字列に分割して特殊文字をエスケープする必要があります。
逐語的な文字列を作成するには、次のように特殊文字間の文字列をカプセル化します。
~{string}~
<!--NeedCopy-->
StyleBook 式では、逐語的な文字列を使用できます。
注:
このシーケンスは逐語的な文字列の終わりを示すため、入力文字列には一連の文字
}~
を使用しないでください。
例:
~{HTTP.REQ.COOKIE.VALUE("jsessionid") ALT HTTP.REQ.URL.BEFORE_STR("=").AFTER_STR(";jsessionid=") ALT HTTP.REQ.URL.AFTER_STR(";jsessionid=")}~
<!--NeedCopy-->
複数の逐語文字列を連結する
逐語文字列を通常の文字列または補間で連結できます。そうすると、StyleBookは逐語文字列のみの解釈をスキップします。連結する文字列の間には、プラス (+) 演算子を使用します。
例:
value: "~{"id": "}~ + %{$atom.key}% + ~{", "value": "}~ + %{$atom.value}% + ~{"}~"
<!--NeedCopy-->
この例では、%{$atom.key}%
と%{$atom.value}%
が解釈されます。そして、残りの部分については解釈がスキップされます。
ターゲットエクスプレッション
StyleBook 定義では、$current-target
式を使用して現在のターゲットの ADC インスタンスを参照できます。ターゲットADCインスタンスの IP アドレスを具体的に参照するには、次の式を使用します。
$current-target.ip
<!--NeedCopy-->
例:
components:
-
name: lb-comp
type: ns::lbvserver
properties:
name: $current-target.ip + "-lbvserver"
<!--NeedCopy-->
この例では、lbvserver
の名前はターゲット ADC インスタンスの IPアドレスを使用します。
式の種類の検証
StyleBook エンジンでは、コンパイル時により強力な型チェックが可能になりました。つまり、StyleBookの作成時に使用される式は、設定パックの作成時ではなく、StyleBook自体のインポート時に検証されます。
パラメータ、置換、コンポーネント、コンポーネントのプロパティ、コンポーネントの出力、ユーザー定義変数 (repeat-item、repeat-index、置換関数への引数) などへの参照はすべて、その存在と型について検証されます。
タイプチェックの例:
次の例では、lbvserver
StyleBookのポートプロパティの予想されるタイプはtcp-port
です。Citrix Application Delivery Management(ADM)では、タイプの検証はコンパイル時(インポート時)に行われます。コンパイラは、文字列とtcp-port
が互換性がない型であることを検出するため、StyleBookコンパイラはエラーを表示し、StyleBookのインポートまたは移行に失敗します。
components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: mylb
ipv46: 10.102.190.15
port: str("80")
servicetype: HTTP
<!--NeedCopy-->
この StyleBook を正常にコンパイルするには、コンパイラで以下を数値として宣言します。
port: 80
無効な式のフラグ付けの例:
以前のリリースでは、無効な式がプロパティ名に割り当てられている場合、コンパイラは無効な式を検出せず、StyleBookをCitrix ADM にインポートすることができました。これで、このStyleBookがCitrix ADMにインポートされると、コンパイラはこのような無効な式を識別し、フラグを付けます。その結果、StyleBookはCitrix ADMへのインポートに失敗します。
この例では、lb-sg-binding-comp
コンポーネントの name プロパティに割り当てられる式は $components.lbvserver-comp.properties.lbvservername
です。ただし、コンポーネントlbvserver-comp
にはlbvservername
と呼ばれるプロパティはありません。以前のCitrix ADM リリースでは、コンパイラはこの式を許可し、正常にインポートされていました。実際の失敗はこのStyleBookを用いて構成パックを作成するときに起こります。ただし、インポート中にこの種のエラーが特定され、StyleBookはCitrix ADM にインポートされません。このようなエラーを手動で修正し、StyleBooks をインポートします。
Components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: mylb
ipv46: 10.102.190.15
port: 80
servicetype: HTTP
-
name: sg-comp
type: ns::servicegroup
properties:
servicegroupname: mysg
servicetype: HTTP
-
name: lb-sg-binding-comp
type: ns::lbvserver_servicegroup_binding
condition: $parameters.create-binding
properties:
name: $components.lbvserver-comp.properties.lbvservername
servicegroupname: $components.sg-comp.properties.servicegroupname
<!--NeedCopy-->
インデックスの一覧
一覧のアイテムは直接インデックスすることでアクセスできます。
式 | 説明 |
$components.test-lbs[0] |
thetest-lbs コンポーネントの最初の項目を参照します |
$components.test-lbs[0].properties.p1 |
test-lbs コンポーネントの最初のアイテムのプロパティ p1 を参照します。 |
$components.lbcomps[0].outputs.servicegroups[1].properties.servicegroupname |
servicegroups コンポーネントの2番目の項目のプロパティservicegroupname を参照します。これは、lbcomps コンポーネントの最初の項目からの出力です。 |
共有
共有
This Preview product documentation is Citrix Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Citrix Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Citrix product purchase decisions.
If you do not agree, select Do Not Agree to exit.