Product Documentation

Repeat 구조

Oct 20, 2016

구성 요소의 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-listrepeat-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