Application Delivery Management

条件构造

可以使用 condition 构造使组件成为有条件的组件。condition 构造的值是求值结果为 true 或 false 的布尔表达式。如果条件为 true,则使用该组件构建其配置对象。如果条件为 false,则跳过该组件,不通过它创建配置对象。布尔表达式通常基于参数值。

示例

components:
      -
        name: servicegroup-comp
        type: ns::servicegroup
        condition: $parameters.svc-server-ips
        properties:
              name: $parameters.name + "-svcgrp"
              servicetype: HTTP
<!--NeedCopy-->

在此示例中,如果用户为可选参数 svc-server-ips 指定一个值,则样书引擎将处理组件 servicegroup-comp。如果条件为 false,即如果用户没有为此参数提供值,则系统为此参数指定空值,且求值结果为 false,那么样本引擎将忽略此组件,且不创建服务组。

请注意,布尔表达式可以基于样书中支持的任何有效表达式(例如,另一个组件是否存在,或一个参数是否有特定值)。

以下示例在条件求值结果为 true 时构建 NITRO 类型 ns::systemfile 的配置对象。

示例

     components
          -
            name: pem_key_files
            type: ns::systemfile
            condition: "$components.der-certificate-files-comp or $components.pem-certificate-files-comp"
            properties:
                   filecontent: $certificate.keyfile.contents
                   fileencoding: "BASE64"
                   filelocation: "/nsconfig/ssl"
                   filename: $certificate.keyfile.filename
<!--NeedCopy-->

在此示例中,条件是一个复杂的“OR”表达式,只有在样书中的其他两个组件已经处理(未跳过)时,才希望样书才创建此配置对象,从而在组件之间创建依赖关系。

条件构造