重复构造
可以使用组件的重复构造来构建多个相同类型的配置对象。
在下面的示例中,members-svcg-comp 组件用于将一组服务绑定到父组件创建的服务组。要创建将每 台服务器绑定到服务组的配置对象,请使用重复构造遍历为参数 svc-server 指定的服务列表。在迭代过程中,该组件为服务组中的每个服务(在 re peat-item 构造中称为 srv )创建一个 servicegroup_servicegroupmember_bind 类型的 NITRO 对象,并将每个 NITRO 对象中的 ip 属性设置为相应服务的 IP 地址。
示例:
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-->
重 复 本身就是一个对象,重 复列表 和重 复项 是重复对象的属性。
- repeat-list 是必需属性,它标识组件迭代的列表。
- repeat-item 是可选的,用于为迭代中的当前项目指定友好名称。
如果未指定,则可以使用表达式 $repeat-item 访问当前项目。上述示例中的最后一个组件还可以编写如下:
-
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-->
除了能够引用当前项目白色迭代列表之外,还可以使用 重复索引引引用列表中项目的当前索引。在以下示例 中,重复索引 用于基于当前索引计算端口号:
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-->
与 重复项构造类似,您可以指定不同的变量名称来引用 迭代的当前索引。上述示例与以下示例等同:
-
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-->
重复构造
已复制!
失败!