样书配置

可选属性

有时,组件的属性从表达式中获取其值,表达式可以是参数引用之类的简单表达式,也可以是更复杂的表达式。在组件中设置此属性值是可选的。可以选择仅当表达式返回实际值时设置该属性值,否则可以选择不设置此属性。

例如,假设要设置的属性之一是类型为 ns። lbvserver 的组件的lbmethod(负载平衡算法)。属性lbmethod的值取自用户提供的参数值,如下所示:

components - name: lbvserver_comp type: ns::lbvserver properties: name: $parameters.lb-appname + "-lb" servicetype: $parameters.lb-service-type ipv46: $parameters.lb-virtual-ip port: 80 lbmethod: $parameters.lb-advanced.algorithm 

现在,考虑参数lb-高级d.算法是一个可选参数。而且,如果用户没有为此参数提供值,因为该参数是可选的,则表达式$参数s.lb-高级d.算法将计算为空值。因此,将为lbmethod属性传递无效值。为了避免这种情况,可以在属性名称后面添加后缀“?”将属性标注为可选,如下所示:

components - name: lbvserver_comp type: ns::lbvserver properties: name: $parameters.lb-appname + "-lb" servicetype: $parameters.lb-service-type ipv46: $parameters.lb-virtual-ip port: 80 lbmethod?: $parameters.lb-advanced.algorithm 

使用 “? “如果右侧的表达式计算为什么,则忽略该属性,在这种情况下,这将等同于定义如下的组件:

components - name: lbvserver_comp type: ns::lbvserver properties: name: $parameters.lb-appname + "-lb" servicetype: $parameters.lb-service-type ipv46: $parameters.lb-virtual-ip port: 80 

因为lbmethod是可选的,省略它仍然是有效的组件。请注意,如果在 “ns። lbvserver” 中定义了默认值,则lbmethod可能会采用默认值。“

可选属性

在本文中