繰り返しコンストラクト

最終公開日 : Sep 25, 2026
コンポーネントのrepeatコンストラクトを使用して、同じタイプの複数の構成オブジェクトを構築できます。
以下の例では、members-svcg-compコンポーネントを使用して、サービスのリストを親コンポーネントによって作成されたサービスグループにバインドします。各サーバーをサービスグループにバインドする構成オブジェクトを作成するには、repeatコンストラクトを使用して、パラメーターsvc-serversに指定されたサービスのリストを反復処理します。反復処理中に、コンポーネントはサービスグループ内の各サービス(repeat-itemコンストラクトではsrvと呼ばれます)に対してservicegroup_servicegroupmember_bindingタイプのNITROオブジェクトを作成し、各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
repeatはそれ自体がオブジェクトであり、repeat-listとrepeat-itemはrepeatオブジェクトの属性です。
  • 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
リストを反復処理中に現在の項目を参照できることに加えて、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
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
Related information