ネストされたコンポーネント
あるコンポーネント内に別のコンポーネントをネストすると、ネストされたコンポーネントは、親コンポーネントによって作成された構成オブジェクトまたはコンテキストを参照することで、独自の構成オブジェクトを作成できます。ネストされたコンポーネントは、親コンポーネントで作成されたオブジェクトごとに1つ以上のオブジェクトを作成できます。あるコンポーネント内に別のコンポーネントをネストしても、作成された構成オブジェクト間に何らかの関係があることを示すものではありません。ネストは、コンポーネントが親コンポーネントの既存のコンテキスト内で構成オブジェクトを構築するタスクを容易にする方法です。
例:
components:
-
name: my-lbvserver-comp
type: ns::lbvserver
properties:
name: $parameters.name + "-lb"
servicetype: HTTP
ipv46: $parameters.ip
port: 80
lbmethod: $parameters.lb-alg
components:
-
name: my-svcg-comp
type: ns::servicegroup
properties:
name: $parameters.name + "-svcgrp"
servicetype: HTTP
components:
-
name: lbvserver-svg-binding-comp
type: ns::lbvserver_servicegroup_binding
properties:
name: $parent.parent.properties.name
servicegroupname: $parent.properties.name
-
name: members-svcg-comp
type: ns::servicegroup_servicegroupmember_binding
repeat:
repeat-list: $parameters.svc-servers
repeat-item: srv
properties:
ip: $srv
port: str($parameters.svc-port)
servicegroupname: $parent.properties.name
この例では、多段階のネストが使用されています。コンポーネント my-lbvserver-comp には、my-svcg-comp という子コンポーネントがあります。そして、my-svcg-comp コンポーネントには、その中に2つの子コンポーネントがあります。my-svcg-comp コンポーネントは、組み込みの NITRO リソースタイプ「servicegroup」の属性に値を提供することで、NetScaler インスタンス上にサービスグループ構成オブジェクトを作成するために使用されます。my-svcg コンポーネントの最初の子コンポーネントである lbvserver-svg-binding-comp は、その親コンポーネントによって作成されたサービスグループを、親の親コンポーネントによって作成された負荷分散仮想サーバー (lbvserver) にバインドするために使用されます。$parent 表記(親参照とも呼ばれます)は、親コンポーネント内のエンティティを参照するために使用されます。2番目の子コンポーネントである members-svcg-comp は、サービスリストを親コンポーネントによって作成されたサービスグループにバインドするために使用されます。このバインディングは、StyleBook の repeat コンストラクトを使用して、パラメーター svc-servers に指定されたサービスリストを反復処理することで実現されます。repeat コンストラクトの詳細については、「Repeat Construct」を参照してください。
コンポーネントのネストを使用せずに、同じ構成オブジェクトを作成することもできます。詳細と例については、「StyleBook to Create a Basic Load Balancing Configuration」を参照してください。