あるコンポーネント内に別のコンポーネントをネストすると、ネストされたコンポーネントは、親コンポーネントによって作成された構成オブジェクトまたはコンテキストを参照することによって、独自の構成オブジェクトを作成できます。ネストされたコンポーネントは、親コンポーネントで作成された各オブジェクトに対して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の繰り返しコンストラクトを使用して、パラメータ
svc-servers に指定されたサービスのリストを反復処理することで実現されます。繰り返しコンストラクトの詳細については、「
繰り返しコンストラクト」を参照してください。