Konstrukt wiederholen

Sie können das Wiederholungskonstrukt einer Komponente verwenden, um mehrere Konfigurationsobjekte desselben Typs zu erstellen.

Im folgenden Beispiel wird die members-svcg-comp-Komponente verwendet, um die Liste der Dienste an die von der übergeordneten Komponente erstellte Dienstgruppe zu binden. Um ein Konfigurationsobjekt zu erstellen, das jeden Server an die Dienstgruppe bindet, verwenden Sie das Wiederholungskonstrukt, um die Liste der Dienste zu durchlaufen, die für den Parameter svc-Server angegeben ist. Während der Iteration erstellt die Komponente ein NITRO -Objekt vom Typ servicegroup_servicegroupmember_binding für jeden Dienst (im repeat-item construct als srv bezeichnet) in der Dienstgruppe und legt das ip-Attribut in jedem NITRO fest. -Objekt an die IP-Adresse des entsprechenden Dienstes.

Beispiel:

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

Die Wiederholung ist ein Objekt für sich, und repeat-list und repeat-item sind Attribute für das Wiederholungsobjekt.

  • repeat-list ist ein obligatorisches Attribut, das die Liste identifiziert, auf der die Komponente iteriert.
  • repeat-item ist optional und wird verwendet, um dem aktuellen Element in der Iteration einen Anzeigenamen zu geben.

Wenn nicht angegeben, kann auf das aktuelle Element mit dem Ausdruck $repeat-itemzugegriffen werden. Die letzte Komponente im obigen Beispiel kann auch wie folgt geschrieben werden:

          -

          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

Neben der Möglichkeit, auf das aktuelle Element weiß Iteration über eine Liste zu verweisen, ist es auch möglich, auf den aktuellen Index des Elements in der Liste mit repeat-indexzu verweisen. Im folgenden Beispiel wird repeat-index verwendet, um eine Portnummer basierend auf dem aktuellen Index zu berechnen:

             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

Ähnlich wie beim Repeat-Item-Konstrukt können Sie einen anderen Variablennamen zuweisen, der auf den aktuellen Index der Iteration verweist. Das vorherige Beispiel entspricht dem folgenden Beispiel:

     -

             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

Konstrukt wiederholen