repeat構造
コンポーネントの repeat 構造を使用して、同じタイプの複数の構成オブジェクトを作成できます。
次の例では、members-svcg-compコンポーネントは、親コンポーネントが作成したサービスグループにサービス一覧をバインドするために使用されます。各サーバーをサービスグループにバインドする設定オブジェクトを作成するには、 repeat 構造を使用して、パラメータ svc-serversに指定されているサービスのリストを反復処理します。反復処理中、コンポーネントはサービスグループ内の各サービスに対して servicegroup_servicegroupmember_binding 型の NITRO オブジェクト (repeat-item** 構造体では **srv と呼ばれます) を作成し、各 NITRO オブジェクトの ip 属性を対応するサービスの IP アドレス。
例:
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: $parameters.svc-port
servicegroupname: $parent.properties.name
<!--NeedCopy-->
リ ピート はそれ自体でオブジェクトであり、 リピートリスト と リピートアイテム はリピートオブジェクトの属性です。
- repeat-listは、コンポーネントが反復する一覧を識別する必須の属性です。
- repeat-itemはオプションで、反復処理中の現在の項目にフレンドリ名を付けるために使用されます。
指定しない場合、 $ repeat-item という式を使用して現在の項目にアクセスできます。上の例の最後のコンポーネントは、次のように記述することもできます。
-
name: members-svcg-comp
type: ns::servicegroup_servicegroupmember_binding
repeat:
repeat-list: $parameters.svc-servers
properties:
ip: $repeat-item
port: $parameters.svc-port
servicegroupname: $parent.properties.name
<!--NeedCopy-->
リストを反復処理する現在のアイテムを参照できるだけでなく、 repeat-indexを使用してリスト内のアイテムの現在のインデックスを参照することもできます。次の例では、 repeat-index を使用して、現在のインデックスに基づいてポート番号を計算します。
name: services
type: ns::service
repeat:
repeat-list: $parameters.app-services
repeat-item: srv
properties:
ip: $parameters.app-ip
port: $parameters.base-port + repeat-index
servicegroupname: $parent.properties.name
<!--NeedCopy-->
repeat-item 構造と同様に、別の変数名を割り当てて、反復の現在のインデックスを参照できます。前の例は次の例と同等です。
-
name: services
type: ns::service
repeat:
repeat-list: $parameters.app-services
repeat-item: srv
repeat-index: idx
properties:
ip: $parameters.app-ip
port: $parameters.base-port + $idx
servicegroupname: $parent.properties.name
<!--NeedCopy-->