Parameters-default-sources 构造
可以使用此构造重用其他 StyleBook 中的参数定义。
考虑以下场景:一个或一组参数在多个 StyleBook 中重复使用。为避免每次创建新的 StyleBook 时都重新定义这些参数,可以一次性定义它们,然后通过使用 parameters-default-sources 构造将它们的定义导入到需要这些参数的 StyleBook 中。
例如,如果许多 StyleBook 需要配置虚拟 IP,可能需要在创建的每个新 StyleBook 中定义与虚拟 IP 相关的相同参数。相反,可以创建一个单独的 StyleBook,例如名为“vip-params”,并在其中定义所有相关参数,如以下示例所示:
-
name: vip-params
namespace: com.acme.commontypes
version: "1.0"
description: 此 StyleBook 定义了典型的虚拟 IP 配置。
private: true
schema-version: "1.0"
parameters:
-
name: lb-appname
label: 负载均衡应用程序名称
description: 负载均衡应用程序的名称
type: string
required: true
-
name: lb-virtual-ip
label: 负载均衡应用程序虚拟 IP 地址
description: 表示负载均衡应用程序的虚拟 IP 地址
type: ipaddress
required: true
-
name: lb-virtual-port
label: 负载均衡应用程序虚拟端口
description: 表示负载均衡应用程序的 TCP 端口
type: tcp-port
default: 80
-
name: lb-service-type
label: 负载均衡应用程序协议
description: 用于负载均衡应用程序的协议。
type: string
default: HTTP
required: true
allowed-values:
- HTTP
- SSL
- TCP
<!--NeedCopy-->
然后,可以创建使用这些参数的其他 StyleBook。以下是此类 StyleBook 的示例。
-
name: acme-biz-app
namespace: com.acme.stylebooks
version: "1.0"
description: 此 StyleBook 定义了 Biz App 的 NetScaler 配置
schema-version: "1.0"
import-stylebooks:
-
namespace: com.acme.commontypes
prefix: cmtypes
version: "1.0"
parameters-default-sources:
- cmtypes::vip-params
parameters:
-
name: monitorname
label: 监视器名称
description: 监视器的名称
type: string
required: true
-
name: type
label: 监视器类型
description: 监视器的类型
type: string
required: true
allowed-values:
- PING
- TCP
- HTTP
- HTTP-ECV
- TCP-ECV
- HTTP-INLINE
<!--NeedCopy-->
在 StyleBook acme-biz-app 中,首先,通过使用“import-stylebooks”部分导入 vip-params StyleBook 的命名空间和版本。然后添加 parameters-default-sources 构造,并指定 StyleBook 名称,即 vip-params。这与直接在此 StyleBook 中定义 vip-params StyleBook 的参数具有相同的效果。
可以包含来自多个 StyleBook 的参数,因为 parameters-default-sources 是一个列表,并且列表中的每个项都应为一个 StyleBook。
除了包含来自其他 StyleBook 的参数外,还可以通过使用 parameters 部分定义自己的参数。StyleBook 的完整参数列表是来自其他 StyleBook 的参数与在此 StyleBook 中定义的参数的组合。因此,表达式 $parameters 指的是此参数组合。
请注意,如果参数在导入的 StyleBook 和当前 StyleBook 中都已定义,则当前 StyleBook 中的定义将覆盖从另一个 StyleBook 导入的定义。如果需要,可以通过自定义一些导入的参数来有效利用此功能,同时按原样使用其余导入的参数。
parameters-default-sources 构造也可以用于嵌套参数,如以下示例所示:
parameters:
-
name: vip-details
label: 虚拟 IP 详细信息
description: 虚拟 IP 的详细信息
type: object
required: true
parameters-default-sources:
- cmtypes::vip-params
<!--NeedCopy-->
这类似于将 StyleBook vip-params 的参数直接添加为此 StyleBook 中 vip-details 参数的子参数。