Konstrukt wiederholen
Sie können dasWiederholungskonstrukteiner Komponente verwenden, um mehrere Konfigurationsobjekte desselben Typs zu erstellen.
Im folgenden Beispiel wird diemembers-svcg-comp-Komponenteverwendet, 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, verwendenSie das repeate-Konstrukt, um die Liste der Dienste zu durchlaufen, die für den Parametersvc-Serverangegeben ist. Während der Iteration erstellt die Komponente ein NITRO-Objekt vom Typservicegroup_servicegroupmember_bindingfür jeden Dienst (imrepeat-Item-Konstruktalssrvbezeichnet) in der Servicegruppe und setzt dasip-Attributin 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
DieWiederholungist ein Objekt für sich, undrepeat-listundrepeat-itemsind 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.
要是不angegeben,萤石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 während der Iteration über eine Liste zu verweisen, ist es auch möglich, auf den aktuellen Index des Elements in der Liste mitrepeat-indexzu verweisen. Im folgenden Beispiel wirdrepeat-indexverwendet, 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 beimRepeat-Item-Konstruktkö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