嵌套组件
将一个组件嵌套在另一个组件中,允许嵌套组件通过引用父组件创建的配置对象或上下文来创建其配置对象。嵌套组件可以为父组件中创建的每个对象创建一个或多个对象。将一个组件嵌套在另一个组件中并不表示所创建的配置对象之间存在任何关系。嵌套是一种方便组件在父组件的现有上下文中构建配置对象的方式。
示例:
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: str($parameters.svc-port)
servicegroupname: $parent.properties.name
在此示例中,使用了多级嵌套。组件 my-lbvserver-comp 包含一个名为 my-svcg-comp 的子组件。并且,my-svcg-comp 组件内部包含两个子组件。my-svcg-comp 组件用于通过为内置 NITRO 资源类型“servicegroup”的属性提供值,在 NetScaler 实例上创建服务组配置对象。my-svcg 组件的第一个子组件 lbvserver-svg-binding-comp 用于将其父组件创建的服务组绑定到父组件的父组件创建的负载均衡虚拟服务器 (lbvserver)。$parent 符号(也称为父引用)用于引用父组件中的实体。第二个子组件 members-svcg-comp 用于将服务列表绑定到父组件创建的服务组。通过使用 StyleBook 的重复构造来迭代为参数 svc-servers 指定的服务列表,从而实现绑定。有关重复构造的信息,请参阅 重复构造。
您也可以在不使用组件嵌套的情况下创建相同的配置对象。有关更多信息和示例,请参阅 使用 StyleBook 创建基本负载均衡配置。