ネストされたコンポーネント
コンポーネントを別のコンポーネント内にネストした場合、ネストされたコンポーネントは、親コンポーネントによって作成される構成オブジェクトまたはコンテキストを参照してその構成オブジェクトを作成できます。ネストされたコンポーネントは、親コンポーネントでオブジェクトが作成されるたびに、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
<!--NeedCopy-->
この例では、複数レベルのネストが使用されています。my-lbvserver-comp
コンポーネントには、my-svcg-comp
という子コンポーネントがあります。また、 my-svcg-comp
コンポーネントには 2 つの子コンポーネントがあります。my-svcg-comp
コンポーネントは、組み込みのNITRO リソースタイプ”servicegroup
“の属性に値を指定することにより、Citrix ADCインスタンス上にサービスグループ構成オブジェクトを作成するために使用されます。my-svcg
コンポーネントの最初の子コンポーネントであるlbvserver-svg-binding-comp
は、親コンポーネントによって作成されたサービスグループを、親の親コンポーネントによって作成された負荷分散仮想サーバー (lbvserver
) にバインドするために使用されます。$parent表記(親参照とも呼ばれる)は、親コンポーネントのエンティティを参照するために使用されます。2 番目の子コンポーネントmembers-svcg-comp
は、親コンポーネントによって作成されたサービスグループにサービスのリストをバインドするために使用されます。バインドは、StyleBookのrepeat構造を使用して、パラメータsvc-servers
に指定されたサービスのリストを反復処理することで実現されます。repeat構造については、「repeat構造」を参照してください。
同じ構成オブジェクトを、コンポーネントのネストを使用せずに作成することもできます。追加の情報および例については、「基本的な負荷分散の構成を作成するためのStyleBook」を参照してください。