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 de repetición para iterar sobre la lista de servicios especificada para el parámetro svc-servers. Durante la iteración, el componente crea un objeto NITRO del tipo servicegroup_servicegroupmember_binding para cada servicio (denominado srv en la construcción repetiat-item ) en el grupo de servicios, y establece el atributo ip en cada objeto NITRO en 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
<!--NeedCopy-->
La repetición es un objeto por sí misma, y repeat-list y repeat-item son atributos para el objeto repeat.
- repeat-list es un atributo obligatorio que identifica la lista en la que el componente itera.
- 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 utilizando 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
<!--NeedCopy-->
Además de poder hacer referencia al elemento blanco actual iterando sobre una lista, también es posible hacer referencia al índice actual del elemento en la lista usando repeat-index. 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
<!--NeedCopy-->
Al igual que la construcción repeat-item, puede 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
<!--NeedCopy-->