Este artículo ha sido traducido automáticamente. (Aviso legal)
Repetir componente fijo
Puede utilizar la construcción repetida de un componente para crear varios objetos de configuración del mismo tipo.
En el ejemplo siguiente, el componente members-svcg-comp se utiliza para enlazar la lista de servicios al grupo de servicios creado por el componente principal. Para crear un objeto de configuración que vincule cada servidor al grupo de servicios, utilice la construcción repeat para recorrer la lista de servicios especificada para el parámetro svc-servers . Durante la iteración, el componente crea un objeto NITRO de tipo servicegroup_servicegroupmember_binding para cada servicio (denominado srv en la construcción repeat-item) en el grupo de servicios, y establece el atributo ip en cada NITRO a la dirección IP del servicio correspondiente.
Ejemplo:
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
La repetición es un objeto en sí misma, y repeat-list y repeat-item son atributos del objeto repetido.
- repeat-list es un atributo obligatorio que identifica la lista en la que itera el componente.
- repeat-item es opcional, y se utiliza para dar un nombre descriptivo al elemento actual en la iteración.
Si no se especifica, se puede acceder al elemento actual mediante la expresión$repeat-item. El último componente en el ejemplo anterior también se puede escribir de la siguiente manera:
- 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
Además de poder hacer referencia al elemento actual en blanco iterando sobre una lista, también es posible hacer referencia al índice actual del elemento de la lista mediante el índice repetido. En el ejemplo siguiente, repeat-index se utiliza para calcular un número de puerto basado en el índice actual:
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
Al igual que en la construcción repeat-item , puedes asignar un nombre de variable diferente para hacer referencia al índice actual de la iteración. El ejemplo anterior es equivalente al siguiente ejemplo:
- 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