インスタンスロール
スタイルブックは、NetScaler インスタンスで以下の構成をサポートしています。
- 対称構成-構成パックが複数のCitrix ADC インスタンスに適用され、すべてのインスタンスに展開されている構成が同じ場合。
- 非対称構成- 構成パックが複数のCitrix ADC インスタンスに適用され、すべてのインスタンスに展開される構成が異なる場合。たとえば、デフォルトのMicrosoft Skype for Business StyleBookでは、NetScaler インスタンスごとに異なる構成を展開する必要があります。
StyleBooksの「インスタンスロール」機能を使用すると、非対称構成を作成できます。ここでは、構成パック内の各Citrix ADC インスタンスに異なる役割を割り当てることができます。ロールは、NetScaler インスタンスが受け取る構成パックの構成オブジェクトを決定します。
注意事項:
- StyleBookのインスタンスロールのセットは、StyleBookの作成時に定義されます。
- ロールは、構成パックを作成または更新するときに、特定の ADC インスタンスに割り当てられます。
「ターゲットロール」セクション
「ターゲットロール」は通常、StyleBookの「スタイルブックのインポート」セクションの後と「パラメータ」セクションの前に配置されます。StyleBookでサポートされているすべてのロールは、「ターゲットロール」セクションで宣言されています。
次のStyleBookの例では、「ターゲットロール」セクションにAとBの2つのロールが定義されています。
target-roles:-name:Aname:Bmin-targets:2max-targets:5
ロール B には、min-targets
とmax-targets
2つのオプションのサブプロパティも定義されていることがわかります 。
このStyleBookから構成パックを作成するときに、min-targets
はこのロールを割り当てるADCインスタンスの最小必須数を指定します。このStyleBookから構成パックを作成するときに、max-targets
はこのロールを割り当てることができるADCインスタンスの最大数を指定します。
これらのサブプロパティが指定されていない場合、そのロールに設定できる ADC インスタンスの数に制限はありません。min-targets = 0 の場合、ロールに関連する設定はオプションです。min-targets = 1 の場合、設定は必須であり、ロールには少なくとも 1 つの ADC インスタンスを設定する必要があります。
ロール「デフォルト」
明示的に定義された役割に加えて、すべてのStyleBookには暗黙の役割があります。この暗黙のロールはデフォルトロールと呼ばれ、StyleBookの他のロールと同様に使用されます。設定パックを作成するときに、ADC インスタンスに特定のロールが割り当てられていない場合、インスタンスは「デフォルト」ロールに暗黙的に割り当てられます。その後、インスタンスは「デフォルト」ロールを持つコンポーネントによって生成されたすべての設定オブジェクトを受け取ります。
ロールを持つコンポーネント
StyleBookがサポートできるロール(ロール「デフォルト」を含む)を定義すると、StyleBookのコンポーネントセクションでそのロールを使用できます。コンポーネントを特定の役割を果たす ADC インスタンスにのみデプロイする場合は、次のコンポーネントの例に示すように、コンポーネントの一部として roles 属性を指定できます。
-name:C1type:ns::lbvserverroles:-Aproperties:name:lb1servicetype:HTTPipv46:1.1.1.1port:80
この例では、コンポーネントはインスタンスに展開されロールAを実行するlbvserver
を生成します。コンポーネントのroles属性はlist
で、コンポーネントには複数のロールを割り当てることができます。これらのロールはStyleBookのtarget-roles
セクションで宣言されているはずです。
注
StyleBookのコンポーネントがロール属性を指定していない場合、コンポーネントによって生成された構成オブジェクトは、ロールに関係なく、すべてのCitrix ADC インスタンスに作成されます。この機能を効果的に使用して、構成パックのすべてのインスタンスに適用できる設定オブジェクトを作成できます。
2つの役割と4つのコンポーネントで構成されるStyleBookを考えてみましょう。
- コンポーネント C1 にはロール A と B があります。
- コンポーネント C2 にはロール B があります。
- コンポーネント C3 にはロールが定義されていません
- コンポーネント C4 には「デフォルト」というロールがあります
このStyleBookのコンポーネントセクションは次のとおりです。
components:-name:C1type:ns::lbvserverroles:-A-Bproperties:name:lb1servicetype:HTTPipv46:1.1.1.1port:80-name:C2type:ns::lbvserverroles:-Bproperties:name:lb2servicetype:HTTPipv46:12.12.12.12port:80-name:C3type:ns::lbvserverproperties:name:lb3servicetype:HTTPipv46:13.13.13.13port:80-name:C4type:ns::lbvserverroles:-defaultproperties:name:lb4servicetype:HTTPipv46:14.14.14.14port:80
コンポーネント C3 にはロールが定義されていないため、コンポーネントはロールに関係なくすべてのインスタンスにデプロイされます。一方、コンポーネント C4 には「default」というロールがあります。つまり、明示的なロールが割り当てられていないインスタンスに適用されます。
ここで、この StyleBook を使用して構成パックを作成し、5 つの ADC インスタンスにデプロイすることを検討します。次の方法でロールをインスタンスに割り当てることができます。
- ロール A はインスタンス T1、T2、T3、T4 に割り当てられます
- ロール B はインスタンス T2、T3、T4 に割り当てられます
- インスタンス T5 にはロールが割り当てられていません
以下の画像は、ロール割り当ての概要と、各 ADC インスタンスが受け取る結果の設定を示しています。
このコンポーネントにはroles
属性がないため、コンポーネント C3 はロールに関係なくすべてのインスタンスにデプロイされます。
以下の画像は、サンプル構成パックの作成時の役割の割り当てを示しています。
「Dry Run」機能を使用して、以下を表示および確認します。
- 役割の割り当て
- 各 ADC インスタンスで作成された設定オブジェクト
StyleBookを構築する
StyleBookの「デモターゲットロール」の全内容は次のとおりです。
---name:demo-target-rolesnamespace:com.example.stylebooksversion:"1.2"schema-version:"1.0"import-stylebooks:-namespace:netscaler.nitro.configprefix:nsversion:"10.5"parameters:-name:appnametype:stringrequired:truekey:truetarget-roles:-name:A-name:Bmin-targets:2max-targets:5components:-name:C1type:ns::lbvserverroles:-A-Bproperties:name:lb1servicetype:HTTPipv46:1.1.1.1port:80-name:C2type:ns::lbvserverroles:-Bproperties:name:lb2servicetype:HTTPipv46:12.12.12.12port:80-name:C3type:ns::lbvserverproperties:name:lb3servicetype:HTTPipv46:13.13.13.13port:80-name:C4type:ns::lbvserverroles:-defaultproperties:name:lb4servicetype:HTTPipv46:14.14.14.14port:80
次の図は、サンプル構成パック用に作成されたオブジェクトを示しています。
API の使用
REST API を使用する場合、次のように設定パックを作成または更新するときに、各 ADC インスタンスに対してロールを指定できます。[targets] ブロックで、個々のコンポーネントをデプロイする特定のCitrix ADCインスタンスのUUIDを指定します。
"targets":[{"id":"" ,"roles":["一个“]},]
参考のために、完全なサンプル REST API が提供されています。
POST/
{ "configpack": { "parameters": { "appname": "app1" }, "targets": [ { "id": "f53c35c3-a6bc-4619-b4b4-ad7ab6a94ddb", "roles": ["A"] }, { "id": "c08caa1c-1011-48aa-b8c7-9aed1cd38ed0", "roles": ["A", "B"] }, { "id": "88ac90cb-a5cb-445b-8617-f83d0ef6174e", "roles": ["A", "B"] }, { "id": "bf7b0f74-7a83-4856-86f4-dcc951d3141e", "roles": ["A", "B"] }, { "id": "fa5d97ab-ca29-4adf-b451-06e7a234e3da", "roles": ["default"] } ] } }