样书配置

参数

在此部分可以定义样书中用于创建配置所需的所有参数。它描述样书接收的输入。尽管此部分是可选的,但大多数样书可能需要一个。您可以考虑参数部分为使用样书在 NetScaler 实例上创建配置的用户定义字段。

当您将样书导入 NetScaler 控制台并使用它来创建配置时,GUI 会使用样书的这一部分来显示表单。此表单接受定义的参数值的输入。

以下部分介绍了需要为本节中的每个参数指定的属性:

‘name’

要定义的参数的名称。可以指定字母数字名称。

名称必须以字母表开头,并且可以包含更多的字母、数字、连字符 (-) 或下划线 (_)。

在编写样书时,您可以使用此 name 属性通过使用 $parameters.<name> 表示法来引用其他部分中的参数。

强制性?是

‘label’

一个字符串,作为该参数的名称显示在 NetScaler 控制台 GUI 中。

强制性?否

‘description’

说明参数用途的帮助字符串。当用户单击此参数的帮助图标时,NetScaler 控制台 GUI 会显示此文本。

强制性?否

‘type’

这些参数可以接收的值类型。参数可以是以 下内置类型之一:

  • string:字符数组。如果未指定长度,则字符串值可以接收任何数量的字符。但是,可以使用 min-length 和 max-length 属性限制字符串类型的长度。

  • number:一个整数。可以使用 min-value 和 max-value 属性指定此类型可以接收的最小数和最大数。

  • boolean:可以是真的也可以是假的。YAML 将所有文字视为布尔值(例如,是或否)。

  • ipaddress:表示有效的 IPv4 或 IPv6 地址的字符串。

  • ipnetwork: 它有两个部分。第一部分是 IP 地址,第二部分是网络掩码。

    IP 网络

    网络掩码由网络掩码长度 (netmask-len) 或网络掩码 IP 地址 (netmask_ip) 组成。IPv6 地址的子网掩码长度是介于 0-32 到 0-128 之间的整数。它用于确定网络中的 IP 地址计数。

    通过 NetScaler 控制台 GUI 创建或更新配置包时,您可以执行以下操作之一:

    • 启用网络掩码长度并输入 IP 地址和网络掩码长度
    • 禁用网络掩码长度并输入 IP 地址和网络掩码 IP 地址
  • tcp-port:介于 0 到 65535 之间的数字,表示 TCP 或 UDP 端口。

  • password:表示不透明/密码字符串值。当 NetScaler 控制台 GUI 显示此参数的值时,它会显示为星号(*****)。

  • certfile:表示证书文件。此值允许您在使用 NetScaler 控制台 GUI 创建样书配置时直接从本地系统上载文件。上载的证书文件存储在 NetScaler 控制台的目录 /var/mps/tenants/\<tenant_path>/ns_ssl_certs 中。

    该证书文件将添加到 NetScaler 控制台管理的证书列表中。

  • keyfile:表示证书密钥文件。此值允许您在使用 NetScaler 控制台 GUI 创建样书配置时直接从本地系统上载文件。上载的证书文件存储在 NetScaler 控制台的目录 /var/mps/tenants/\<tenant_path>/ns_ssl_keys 中。

    证书密钥文件将添加到 NetScaler 控制台管理的证书密钥列表中。

  • certkey:此类型用于从 NetScaler 控制台证书存储库中选择 SSL 证书。该存储区列出了上载到您的 NetScaler 控制台服务器的现有 SSL 证书。因此,您可以将 SSL 证书存储在一个地方,即 NetScaler 控制台证书存储区,并在需要时重复使用它们。

    创建配置包时,用户可以从证书存储中添加或选择 SSL 证书。此外,用户可以为多个配置包选择相同的证书。

  • file:代表一个文件。

  • object:此类型用于将多个相关参数分组到父元素下。将类型的父参数指定为“对象”。类型为“object”的参数可以有嵌套的“parameters”部分以描述其包含的参数。

  • another StyleBook:当您使用此类型的参数时,此参数期望其值以表示其类型的样书中定义的参数的形式。

参数也可以包含具有类型列表的 type。为此,请在文字末尾添加 []。例如,如果 type 属性为 string[],则此参数将字符串列表作为输入。可以在使用此样书创建配置时为此参数提供一个、两个或多个字符串。

强制性?是

‘network’

对于 type: ipaddress,您可以指定用于从 networkNetScaler 控制台 IPAM 网络自动分配 IP 地址的 属性。

当您创建样书配置时,NetScaler 控制台会network自动从 该属性中分配 IP 地址。

示例:

      name: virtual-ip
      label: "Load Balancer IP Address"
      type: ipaddress
      network: "network-1"
      required: true
<!--NeedCopy-->

在此示例中,virtual-ip 字段从 network-1 自动分配 IP 地址。删除配置后,IP 地址将释放回网络。

‘dynamic-allocation’

dynamic-allocation 属性将添加到 type:ipaddress 的参数定义中。使用此属性动态列出 NetScaler 控制台 IPAM 网络。此属性可以采用 truefalse 作为输入。对于 type: ipaddress,指定该 dynamic-allocation: true属性以动态列出 NetScaler 控制台中的 NetScaler 控制台 IPAM 网络。在配置包创建窗体中,您可以执行以下操作:

  1. 从列表中选择所需的 IPAM 网络。

  2. 指定要从所选 IPAM 网络分配的 IP 地址。

    如果未指定 IP 地址,NetScaler 控制台会自动从所选 IPAM 网络分配 IP 地址。

示例:

  -
    name: virtual-ip
    label: "Load Balancer IP Address"
    type: ipaddress
    dynamic-allocation: true
    required: true
<!--NeedCopy-->

在此示例中virtual-ip,该 字段列出了 NetScaler 控制台中的 NetScaler 控制台 IPAM 网络。从列表中选择一个网络以从网络中自动分配 IP 地址。删除配置后,IP 地址将释放回网络。

‘key’

指定 true 或 false 指示此参数是否是样书的主要参数。

一本样书可以将一个或多个参数定义为“key”参数。配置 > 配置包页面将参数的值显示为显示键

当您从同一样书中创建不同的配置包时,每个配置的此参数可以有不同的值。该值在 GUI 上显示为显示键。使用此密钥,您可以对配置包进行排序或筛选。

示例

parameters:
  - name: example-appname
    type: string
    label: Application Name
    required: true
    key: true
<!--NeedCopy-->

当样书用户创建配置包时,参数 example-appname 的值显示为显示键。样书用户可以使用此密钥来识别此配置包。

注意

配置包的 Config Key 会覆盖其任何参数上设置的密钥属性。因此,如果用户输入配置密钥的值,则该值将显示在“显示密钥”列中。

默认值为 false。

强制性?否

‘required’

指定 true 或 false 指示参数是必需的还是可选的。如果 设置为 true,则该参数是必需的,用户在创建配置时必须为此 参数提供值。

NetScaler 控制台 GUI 强制用户为此参数提供有效值。

默认值为 false。

强制性?否

‘allowed-values’

类型设置为“string”时,此属性用于定义参数的有效值列表。

从 NetScaler 控制台 GUI 创建配置时,系统会提示用户从该列表中选择一个参数值。此列表是静态的,用户只能从列表中选择一个值。如果要允许用户向列表中添加值,请使用 allow-new-values 属性。

注意

如果要将列表值显示为单选选项,请设置 layout 属性。

示例 1

-
      name: ipaddress
      type: string
      allowed-values:
            -  SOURCEIP
            -  DEST IP
            -  NONE
<!--NeedCopy-->

示例 2

-
      name: TCP Port
      type: tcp-port
      allowed-values:
            -  80
            -  81
            -  8080
<!--NeedCopy-->

示例 3

tcp-ports 的列表,其中列表的每个元素只能在 allowed-values 中指定的值。

-
      name: tcpports
      type: tcp-port[]
      allowed-values:
            -  80
            -  81
            -  8080
            -  8081
<!--NeedCopy-->

强制性?否

‘允许新的价值’

使用此属性可为参数添加动态列表。通过 NetScaler 控制台 GUI 创建或更新配置时,用户可以向列表中添加值。

如果希望用户向参数列表添加值,请指定 true。您可以组合使用 allow-new-valuesallowed-values 属性。此组合允许您为参数定义建议值的列表,并接受新值。

-
      name: port
      type: tcp-port
      allowed-values:
            -  80
            -  81
            -  8080
      allow-new-values: true
<!--NeedCopy-->

在此示例中,用户可以在创建或更新配置包 时从 80、81、8080 中进行选择,或者为 port 参数输入新值。

‘default’

此属性用于为可选参数指定默认值。当用户在未指定值的情况下创建配置时,将使用默认值。

如果满足以下条件,则参数不具任何值:

  • 该参数没有默认值。

  • 用户没有为参数提供值。

示例 1

-
      name: timeout
      type: number
      default: 20
<!--NeedCopy-->

示例 2

要列出参数的默认值,请执行以下操作:

-
      name: protocols
      type: string[]
      default:
            -  TCP
            -  UDP
            -  IP
<!--NeedCopy-->

示例 3

-
      name: timeout
      type: number
      default: 20
<!--NeedCopy-->

示例 4

-
      name: tcpport
      type: tcp-port
      default: 20
<!--NeedCopy-->

强制性?否

‘pattern’

当参数的类型为“string”时,使用此属性定义此 参数的有效值的模式(正则表达式)。

示例

-
      name: appname
      type: string
      pattern: "[a-z]+"
<!--NeedCopy-->

强制性?否

‘min-value’

使用此属性可定义 numbertcp-port 类型参数的最小值。

示例

-
      name: audio-port
      type: tcp-port
      min-value: 5000
<!--NeedCopy-->

min-value 数字可能是负数。但是, min-value(对于 tcp-port)必须是正数。

强制性?否

‘max-value’

使用此属性可定义类型 numbertcp-port 的参数的最大值。

确保最大值大于最小值(如果已定义)。

示例

-
      name: audio-port
      type: tcp-port
      min-value: 5000
      max-value: 15000
<!--NeedCopy-->

强制性?否

‘min-length’

使用此属性可定义 类型为“string”的参数所接受的值的最小长度。

确保定义为值的字符的最小长度大于或等于零。

示例

-
      name: appname
      type: string
      min-length: 3
<!--NeedCopy-->

强制性?否

‘max-length’

使用此属性可以定义 类型为“string”的参数所接受的值的最大长度。

确保值的最大长度大于或等于在 min-length 中定义的字符的长度。

示例

-
      name: appname
      type: string
      max-length: 64
<!--NeedCopy-->

强制性?否

‘min-items’

此属性用于定义列表参数中的最小项目数。

确保最小商品数量大于或等于零。

示例

-
      name: server-ips
      type: ipaddress[]
      min-items: 2
<!--NeedCopy-->

强制性?否

‘max-items’

使用此属性可定义作为 列表的参数中的最大项数。

确保最大商品数量大于最小商品数(如果已定义)。

示例

-
      name: server-ips
      type: ipaddress[]
      min-items: 2
      max-items: 250
<!--NeedCopy-->

强制性?否

‘Gui’

使用此属性在 NetScaler 控制台 GUI 中自定义参数的布局。

强制性?否

‘columns’

此属性是 gui 属性的子属性。使用此属性定义列数,以便在 type: object[]NetScaler 控制台 GUI 中显示 参数。

强制性?否

‘updatable’

此属性是 gui 属性的子属性。使用此属性可指定在创建配置后是否可以更新参数。仅在字符串、布尔值或数字等简单参数类型上设置此属性。

如果该值设置为 false,则在更新配置时,参数字段将显示为灰色。

强制性?否

‘collapse_pane’

此属性是 gui 属性的子属性。使用此属性可指定定义此对象参数布局的窗格是否可折叠。

如果值设置为 true,则用户可以展开或折叠此父参数下方的子参数。

示例

gui:

 collapse_pane: true

 columns: 2
<!--NeedCopy-->

完整的 parameters 部分示例:


parameters:

   -

      name: name

      label: Name

      description: Name of the application

      type: string

      required: true

   -

      name: ip

      label: IP Address

      description: The virtual IP address used for this application

      type: ipaddress

      required: true

   -

      name: svc-servers

      label: Servers

      type: object[]

      required: true

      parameters:

        -

              name: svc-ip

              label: Server IP

              description: The IP address of the server

              type: ipaddress

              required: true

        -

              name: svc-port

              label: Server Port

              description: The TCP port of the server

              type: tcp-port

              default: 80

        -

              name: lb-alg

              label: LoadBalancing Algorithm

              type: string

              allowed-values:

                 - ROUNDROBIN

                 - LEASTCONNECTION

              default: ROUNDROBIN

        -

              name: enable-healthcheck

              label: Enable HealthCheck?

              type: boolean

              default: true
<!--NeedCopy-->

下面的示例定义前面的部分中说明的所有列表属性和值:


        -
              name: features-list

              type: string[]

              min-length: 1

              max-length: 3

              min-items: 1

              max-items: 3

              pattern: "[A-Z]+"

              allowed-values:

                - SP

                - LB

                - CS

              default:

                - LB
<!--NeedCopy-->

‘layout’

此属性是 gui 属性的子属性。使用此属性可以将列表值显示为单选按钮。在样书定义的参数部分中将 layout 属性设置为 radio。它适用于具有 allowed-values 属性的参数。创建配置包时,NetScaler 控制台 GUI 会将列表中的值显示allowed-values为单选 按钮。

示例:

-
    gui:
        layout: radio
    allowed-values:
        - One
        - Two
        - Three
<!--NeedCopy-->

在 NetScaler 控制台 GUI 中,“一”、“二”和“三”值以单选按钮的形式出现。

‘dependent-parameters’

此属性是 gui 属性的子属性。它根据在另一个参数中指定的值动态控制参数的外观或其初始值在样书配置窗体中。

在控制参数在表单上的行为的源参数上指定此属性。您可以包含多个控制其他参数的条件。例如,源参数 protocol 可以具有依赖参数 certificate,该参数仅在 protocol 参数值为 SSL 时才会显示。

每个条件都可以具有以下属性:

  • target-parameter:指定此条件适用的目标参数。

  • matching-values:指定触发操作的源参数的值列表。

  • action:对目标参数指定以下操作之一:

    • read-only:该参数为只读。

    • show:如果参数被隐藏,则该参数将显示在窗体中。

    • hide:该参数将从表单中删除。

    • set-value:参数值被设置为值属性中指定的值。

  • value:如果操作为 set-value,则为目标参数的值。

当用户输入与源参数上的指定值匹配时,目标参数的外观或值将根据指定的操作而发生变化。

示例:

 -
    name: lb-virtual-port
    label: "Load Balanced App Virtual Port"
    description: "TCP port representing the Load Balanced application"
    type: tcp-port
    gui:
      updatable: false
      dependent-parameters:
            -
              matching-values:
                - 80
              target-parameter: $parameters.lb-service-type
              action: set-value
              allowed-values:
              - HTTP
              - TCP
              - UDP

    default: 80

<!--NeedCopy-->

在此示例中,依赖参数在 lb-virtual-port 参数(源参数)下指定。

当源参数值设置为 80 时,lb-service-type 参数将触发 set-value 操作。因此,允许用户选择以下选项之一:

  • HTTP
  • TCP
  • UDP

is_policy_expression

此属性是 gui 属性的子属性。使用此属性使策略表达式编辑器能够编写策略表达式。 在参数定义中将 is_policy_expression 设置为 true。此属性只能用于“字符串”类型的参数。

示例:

parameters:
  -

    name: expression
    type: string
    label: Expression
    required: true
    gui:
      is_policy_expression: true
<!--NeedCopy-->