参数
本节允许您定义在 StyleBook 中创建配置所需的所有参数。它描述了您的 StyleBook 所需的输入。尽管此部分是可选的,但大多数 StyleBook 可能都需要它。您可以将参数部分视为定义字段,供使用 StyleBook 在 NetScaler 实例上创建配置的用户使用。
当您将 StyleBook 导入 NetScaler Console 并使用它创建配置时,GUI 会使用 StyleBook 的此部分来显示一个表单。此表单接受已定义参数值的输入。
以下部分描述了您需要为本节中的每个参数指定的属性:
'名称'
您要定义的参数的名称。您可以指定一个字母数字名称。
名称必须以字母开头,并且可以包含更多字母、数字、连字符 (-) 或下划线 (_)。
在编写 StyleBook 时,您可以使用此
name 属性通过 $parameters.\<name> 符号引用其他部分中的参数。
必填?是
'标签'
在 NetScaler Console GUI 中显示为此参数名称的字符串。
必填?否
'描述'
一个帮助字符串,描述此参数的用途。当用户单击此参数的帮助图标时,NetScaler Console GUI 会显示此文本。
必填?否
'类型'
这些参数可以取的值的类型。参数可以是以下任何 内置类型:
-
string:字符数组。如果未指定长度,字符串值可以包含任意数量的字符。但是,您可以使用属性 min-length 和 max-length 来限制字符串类型的长度。 -
number:一个整数。您可以使用属性 min-value 和 max-value 来指定此类型可以取的最小值和最大值。 -
boolean:可以是 true 或 false。YAML 将所有字面量视为布尔值(例如,Yes 或 No)。 -
ipaddress:表示有效 IPv4 或 IPv6 地址的字符串。 -
ipnetwork:它由两部分组成。第一部分是 IP 地址,第二部分是子网掩码。
子网掩码由子网掩码长度 (netmask-len) 或子网掩码 IP 地址 (netmask_ip) 组成。对于 IPv6 地址,子网掩码长度是一个介于 0-32 和 0-128 之间的整数。它用于确定网络中的 IP 地址数量。从 NetScaler Console GUI 创建或更新配置包时,您可以执行以下操作之一:-
启用子网掩码长度并输入 IP 地址和子网掩码长度
-
禁用子网掩码长度并输入 IP 地址和子网掩码 IP 地址
-
-
tcp-port:一个介于 0 到 65535 之间的数字,表示 TCP 或 UDP 端口。 -
password:表示不透明/秘密字符串值。当 NetScaler Console GUI 显示此参数的值时,它会显示为星号 (*****)。 -
certfile:表示证书文件。当您使用 NetScaler Console GUI 创建 StyleBook 配置时,此值允许您直接从本地系统上传文件。上传的证书文件存储在 NetScaler Console 的/var/mps/tenants/\<tenant_path>/ns_ssl_certs目录中。证书文件将添加到由 NetScaler Console 管理的证书列表中。 -
keyfile:表示证书密钥文件。在使用 NetScaler Console GUI 创建 StyleBook 配置时,此值允许您直接从本地系统上传文件。上传的证书文件存储在 NetScaler Console 中的/var/mps/tenants/\<tenant_path>/ns_ssl_keys目录中。证书密钥文件将添加到由 NetScaler Console 管理的证书密钥列表中。 -
certkey:此类型用于从 NetScaler Console 证书存储中选择 SSL 证书。此存储列出了已上传到 NetScaler Console 服务器的现有 SSL 证书。因此,您可以将 SSL 证书存储在 NetScaler Console 证书存储这一位置,并在需要时重复使用它们。创建配置包时,用户可以从证书存储中添加或选择 SSL 证书。此外,用户可以为多个配置包选择相同的证书。 -
file:表示文件。 -
object:此类型用于将多个相关参数分组到父元素下。将父参数的类型指定为“object”。“object”类型的参数可以包含嵌套的“parameters”部分来描述其包含的参数。 -
another StyleBook:当您使用此类型的参数时,此参数的值应采用 StyleBook 中定义的、表示其类型的参数形式。
参数还可以具有
type,即类型列表。为此,请在类型末尾添加 []。例如,如果 type 属性是 string[],则此参数将字符串列表作为输入。从该 StyleBook 创建配置时,您可以为此参数提供一个、两个或多个字符串。
强制?是
“网络”
对于
type: ipaddress,您可以指定 network 属性,以从 NetScaler Console IPAM 网络自动分配 IP 地址。
当您创建 StyleBook 配置时,NetScaler Console 会从
network 属性自动分配一个 IP 地址。
示例:
name: virtual-ip
label: "Load Balancer IP Address"
type: ipaddress
network: "network-1"
required: true
在此示例中,
virtual-ip 字段从 network-1 自动分配一个 IP 地址。当配置被删除时,该 IP 地址将释放回网络。
'动态分配'
dynamic-allocation 属性被添加到 type:ipaddress 的参数定义中。使用此属性动态列出 NetScaler Console IPAM 网络。此属性可以接受 true 或 false 作为输入。对于 type: ipaddress,指定 dynamic-allocation: true 属性以动态列出 NetScaler Console 中的 NetScaler Console IPAM 网络。在配置包创建表单中,您可以执行以下操作:
-
从列表中选择所需的 IPAM 网络。
-
指定要从所选 IPAM 网络分配的 IP 地址。如果未指定 IP 地址,NetScaler Console 会自动从所选 IPAM 网络分配一个 IP 地址。
示例:
-
name: virtual-ip
label: "Load Balancer IP Address"
type: ipaddress
dynamic-allocation: true
required: true
在此示例中,
virtual-ip 字段列出了 NetScaler Console 中的 NetScaler Console IPAM 网络。从列表中选择一个网络,以从该网络自动分配一个 IP 地址。当配置被删除时,IP 地址会释放回网络。
'键'
指定 true 或 false 以指示此参数是否为 StyleBook 的关键参数。
一个 StyleBook 可以有一个或多个参数定义为“key”参数。Configuration > Config Packs 页面将参数的值显示为 Display Key。
当您从同一个 StyleBook 创建不同的配置包时,每个配置都可以为此参数设置不同的值。此值在 GUI 上显示为显示键。使用此键,您可以对配置包进行排序或筛选。
示例:
parameters:
- name: example-appname
type: string
label: Application Name
required: true
key: true
当 StyleBook 用户创建配置包时,参数
example-appname 的值将显示为显示键。StyleBook 用户可以使用此键来识别此配置包。
注意
配置包的 配置键 会覆盖其任何参数上设置的键属性。因此,如果用户为配置键输入一个值,则此值将显示在 显示键 列中。
默认值为 false。
强制?否
'必需的'
指定 true 或 false 以指示参数是强制性的还是可选的。如果将其 设置为 true,则该参数是强制性的,用户在创建配置时必须为此 参数提供一个值。
NetScaler Console GUI 强制用户为此参数提供一个有效值。
默认值为 false。
强制?否
'允许值'
当类型设置为“string”时,使用此属性定义参数的有效值列表。
从 NetScaler Console GUI 创建配置时,系统会提示用户从此列表中选择一个参数值。此列表是静态的,用户只能从列表中选择一个值。如果要允许用户向列表中添加值,请使用
allow-new-values(#allow-new-values) 属性。
注意
如果要将列表值显示为单选选项,请设置
layout(#layout) 属性。
示例 1:
-
name: ipaddress
type: string
allowed-values:
- SOURCEIP
- DEST IP
- NONE
示例 2:
-
name: TCP Port
type: tcp-port
allowed-values:
- 80
- 81
- 8080
示例 3:
tcp-ports 列表,其中列表的每个元素只能具有 allowed-values 中指定的值。
-
name: tcpports
type: tcp-port[]
allowed-values:
- 80
- 81
- 8080
- 8081
强制?否
'允许新值'
使用此属性为参数添加动态列表。当从 NetScaler Console GUI 创建或更新配置时,用户可以将值添加到列表中。
如果要允许用户向参数列表添加值,请指定 true。您可以组合使用
allow-new-values 和 allowed-values 属性。这种组合允许您为参数定义建议值列表,同时还接受新值。
-
name: port
type: tcp-port
allowed-values:
- 80
- 81
- 8080
allow-new-values: true
在此示例中,用户在创建或更新配置包时,可以从 80、81、8080 中选择,或为参数
port 输入新值。
'默认值'
使用此属性为可选参数分配默认值。当用户创建配置时未指定值,则使用默认值。
如果满足以下条件,则参数不取值:
-
参数没有默认值。
-
用户未提供参数值。
示例 1:
-
name: timeout
type: number
default: 20
示例 2:
要列出参数的默认值:
-
name: protocols
type: string[]
default:
- TCP
- UDP
- IP
示例 3:
-
name: timeout
type: number
default: 20
示例 4:
-
name: tcpport
type: tcp-port
default: 20
必填?否
“模式”
使用此属性定义一个模式(正则表达式),用于此 参数的有效值,当参数类型为“string”时。
示例:
-
name: appname
type: string
pattern: "[a-z]+"
必填?否
“最小值”
使用此属性为类型为
number 或 tcp-port 的参数定义最小值。
示例:
-
name: audio-port
type: tcp-port
min-value: 5000
数字的
min-value 可以是负数。但是,tcp-port 的 min-value 必须是正数。
必填?否
“最大值”
使用此属性为类型为
number 或 tcp-port 的参数定义最大值。
如果已定义,请确保最大值大于最小值。
示例:
-
name: audio-port
type: tcp-port
min-value: 5000
max-value: 15000
强制性?否
'最小长度'
使用此属性定义参数所接受值的最小长度, 类型为“string”。
确保定义为值的字符的最小长度大于或等于零。
示例:
-
name: appname
type: string
min-length: 3
强制性?否
'最大长度'
使用此属性定义参数所接受值的最大长度, 类型为“string”。
确保值的最大长度大于或等于
min-length 中定义的字符长度。
示例:
-
name: appname
type: string
max-length: 64
强制性?否
'最小项数'
使用此属性定义列表参数中的最小项目数。
确保最小项目数大于或等于零。
示例:
-
name: server-ips
type: ipaddress[]
min-items: 2
强制性?否
'最大项目数'
使用此属性定义参数中的最大项目数,该参数是 列表。
确保最大项目数大于最小项目数(如果已定义)。
示例:
-
name: server-ips
type: ipaddress[]
min-items: 2
max-items: 250
强制性?否
'图形用户界面'
使用此属性自定义 NetScaler Console GUI 中参数的布局。
强制性?否
'列'
此属性是
gui 属性的子属性。使用此属性定义在 NetScaler Console GUI 中显示 type: object[] 参数的列数。
强制性?否
'可更新的'
此属性是
gui 属性的子属性。使用此属性指定在配置创建后是否可以更新参数。仅在简单参数类型(例如字符串、布尔值或数字)上设置此属性。
如果值设置为
false,则在更新配置时,参数字段将灰显。
强制性?否
'collapse_pane'
此属性是
gui 属性的子属性。使用此属性指定定义此对象参数布局的窗格是否可折叠。
如果值设置为 true,用户可以展开或折叠此父参数下的子参数。
示例:
gui:
collapse_pane: true
columns: 2
完整参数部分的示例:
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
以下是一个示例,它定义了列表的所有属性以及前面章节中解释的值:
-
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
“布局”
此属性是
gui 属性的子属性。使用此属性将列表值显示为单选按钮。在 StyleBook 定义的参数部分中,将 layout 属性设置为 radio。它适用于具有 allowed-values 属性的参数。创建配置包时,NetScaler Console GUI 会将 allowed-values 列表中的值显示为单选按钮。
示例:
-
gui:
layout: radio
allowed-values:
- One
- Two
- Three
One、Two 和 Three 值在 NetScaler Console GUI 中显示为单选按钮。
“依赖参数”
此属性是
gui 属性的子属性。它根据在另一个参数中指定的值,动态控制 StyleBook 配置表单中参数的显示或其初始值。
在控制表单上参数行为的源参数上指定此属性。您可以包含控制其他参数的多个条件。例如,源参数
protocol 可以有一个依赖参数 certificate,该参数仅在 protocol 参数值为 SSL 时显示。
每个条件可以具有以下属性:
-
目标参数:指定此条件适用的目标参数。
-
匹配值:指定触发操作的源参数值列表。
-
操作:指定对目标参数执行以下操作之一:
-
read-only:该参数变为只读。 -
show:如果参数被隐藏,它将显示在表单中。 -
hide:该参数将从表单中移除。 -
set-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
在此示例中,从属参数在
lb-virtual-port 参数(源参数)下指定。
当源参数值设置为
80 时,lb-service-type 参数会触发 set-value 操作。因此,用户可以选择以下选项之一:
-
HTTP
-
TCP
-
UDP
is_policy_expression
此属性是
gui 属性的子属性。使用此属性可启用策略表达式编辑器来编写策略表达式。 在参数定义中将 is_policy_expression 设置为 true。此属性只能用于“string”类型的参数。
示例:
parameters:
-
name: expression
type: string
label: Expression
required: true
gui:
is_policy_expression: true