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 repeate-Konstrukt, um die Liste der Dienste zu durchlaufen, die für den Parameter svc-Serverangegeben ist. Während der Iteration erstellt die Komponente ein NITRO-Objekt vom Typ servicegroup_servicegroupmember_binding für jeden Dienst (im repeat-Item-Konstrukt als srv bezeichnet) in der Servicegruppe und setzt das ip-Attribut in jedem NITRO-Objekt auf 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
<!--NeedCopy-->
Die Wiederholung ist ein eigenständiges Objekt, und Wiederholungsliste und Wiederholungselementsind 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 benutzerfreundlichen Namen zu geben.
Wenn nicht angegeben, kann auf das aktuelle Element mit dem Ausdruck $repeat-item zugegriffen 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
<!--NeedCopy-->
Neben der Möglichkeit, auf das aktuelle Element während der 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 der Wiederholungsindex verwendet, um eine Portnummer auf der Grundlage des 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
<!--NeedCopy-->
Ä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
<!--NeedCopy-->