将 NetScaler 实例用作数据源
您可以将受管 NetScaler 实例用作数据源。managed-adc
是一种内置数据源类型,可直接用作 NetScaler Console 中的数据源。NetScaler Console 中的每个受管 NetScaler 实例默认都是一个数据源。在创建配置包时,如果您需要从 NetScaler Console 管理的现有 NetScaler 获取数据,则可以在 StyleBook 中开始使用这些数据源。
在 StyleBook 定义中,指定 datum
内置类型参数。您可以在 StyleBook 中使用数据源类型。StyleBook 用户可以选择一个数据源,用于从该源检索数据。
使用不带集合的内置数据源
parameters:
- name: selected-adc
label: Select an existing NetScaler
type: datum
required: true
data-source:
type: managed-adc
<!--NeedCopy-->
在此示例中,datum
参数用于选择 NetScaler Console 管理的任何 NetScaler 实例。managed-adc
内置数据源允许您从 NetScaler Console 管理的任何 NetScaler 实例检索数据。
在您的 StyleBook 中,您可以访问所选 NetScaler 实例中的任何配置。此外,您可以在同一 NetScaler 实例或不同的 NetScaler 实例上创建或更新配置时使用该配置;这取决于所选的目标 NetScaler 实例。
访问数据源中的集合:
在所选 NetScaler 实例中,要访问集合,请使用以下表达式:
$parameters.selected-adc.collections.<collection-name>
<!--NeedCopy-->
示例:
$parameters.selected-adc.collections.lbvserver
<!--NeedCopy-->
此表达式返回所选 NetScaler 实例上的 lbvserver
实体列表。例如,您可以遍历此列表以选择满足特定条件的特定 lbvserver
。
不带集合的 StyleBook 示例
name: add-vservers-from-managed-adc-instances
namespace: com.citrix.adc.stylebooks
version: "1.0"
schema-version: "1.0"
import-stylebooks:
-
namespace: netscaler.nitro.config
prefix: ns
version: "10.5"
parameters:
-
name: selected-adc
label: Select a NetScaler instance
type: datum
required: true
data-source:
type: "managed-adc"
components:
-
name: sslvserver-comp
type: ns::sslvserver
repeat: $parameters.selected-adc.collections.lbvserver
repeat-item: lbvs
repeat-condition: $lbvs.attributes.servicetype == "SSL"
properties:
name: $lbvs.attributes.name
ssl2: DISABLED
ssl3: DISABLED
tls1: DISABLED
tls11: ENABLED
tls12: ENABLED
<!--NeedCopy-->
配置包 GUI 显示 NetScaler Console 管理的 NetScaler 实例,StyleBook 用户在创建或更新配置包时可以选择任何 NetScaler。
此 StyleBook 使用所选 NetScaler 并遍历所有 lbvserver
实体。它选择 SSL 虚拟服务器并设置每个虚拟服务器上允许的 SSL 协议版本。
以下表达式允许您遍历 NetScaler 实例中的 lbvserver
实体列表。
repeat: $parameters.selected-adc.collections.lbvserver
<!--NeedCopy-->
-
collections
:指的是 NetScaler 实例上的所有实体类型。例如csvserver
、lbmonitor
、servicegroup
等。 -
lbvserver
:指的是 NetScaler 实例中的负载平衡虚拟服务器实体列表。
使用带集合的内置数据源
parameters:
- name: selected-lbvserver
label: Select an existing lbvserver
type: datum
required: true
data-source:
type: managed-adc
collection: lbvserver
<!--NeedCopy-->
在此示例中,datum
参数用于允许用户从 managed-adc
数据源类型中选择 NetScaler 实例和特定的 lbvserver
。
在 parameters
部分定义集合类型时,StyleBook 用户可以选择 NetScaler 实例以及该实例上集合中的特定实体。
访问所选项目的属性:
当 StyleBook 用户选择虚拟服务器时,StyleBook 中的以下表达式可以访问所选项目的任何属性。
$parameters.selected-lbvserver.attributes.<attribute-name>
<!--NeedCopy-->
在此示例中,所选 datum
为 lbvserver
。因此,您可以访问 NetScaler 实体 lbvserver
的任何属性,例如 name
、servicetype
、ipv46
等。
示例:
$parameters.selected-lbvserver.attributes.ipv46
<!--NeedCopy-->
此表达式检索所选负载平衡虚拟服务器的 IP。有关 NetScaler 实体(集合)及其属性的更多信息,请参阅 NetScaler NITRO API 参考。
从集合中选择多个项目:
以下参数部分允许 StyleBook 用户选择集合中的多个项目。
parameters:
- name: selected-lbvservers
label: Select existing lbvservers
type: datum[]
required: true
data-source:
type: managed-adc
collection: lbvserver
<!--NeedCopy-->
在此示例中,datum 参数用于定义数据源数组。用户可以从单个 NetScaler 实例或跨 NetScaler 实例选择一个或多个 lbvserver。
以下代码片段描述了访问所选项目及其属性的方式。
components:
- name: sslvserver-comp
type: ns::sslvserver
repeat:
repeat-list: $parameters.selected-lbvservers
repeat-item: vserverObj
properties:
name: $vserverObj.attributes.name
ssl2: DISABLED
ssl3: DISABLED
tls1: DISABLED
tls11: ENABLED
tls12: ENABLED
<!--NeedCopy-->
通过所选项目的引用访问集合:
除了允许 StyleBook 用户在受管 NetScaler 实例上选择特定实体外,您还可以访问所选 NetScaler 实例上相同或不同集合中的任何实体。要访问该 NetScaler 实例上的另一个集合,请在 components
部分中使用以下表达式:
$parameters.selected-lbvserver.datasource.collections.<collection-name>
<!--NeedCopy-->
示例:
$parameters.selected-lbvserver.datasource.collections.csvserver
<!--NeedCopy-->
此表达式返回所选 NetScaler 实例中的内容切换虚拟服务器列表。
此外,以下表达式返回 lbvservers
和 servicegroups
之间的所有绑定列表:
$parameters.selected-lbvserver.datasource.collections.lbvserver_servicegroup_binding
<!--NeedCopy-->
带集合的 StyleBook 示例
以下是一个 StyleBook 示例,演示如何将受管 NetScaler 实例用作数据源:
name: bind-lb-to-servicegroup-using-ADC-as-datasource
namespace: com.citrix.adc.stylebooks
version: "1.1"
display-name: "HTTP/SSL LoadBalancing StyleBook with Service Binding"
description: "This stylebook defines a typical Load Balanced Application configuration where we allow the user to select an existing lbvserver on the NetScaler using datum type parameter. Then a servicegroup for the selected lb is created if it does not exist on the NetScaler. Finally, the selected lbvserver is bound to the service "
schema-version: "1.0"
import-stylebooks:
-
namespace: netscaler.nitro.config
prefix: ns
version: "10.5"
parameters:
-
name: selected-vserver
label: "Select an Existing VServer"
description: "Load Balancing Application Vservers to be bound to service on the ADC"
type: datum
required: true
data-source:
type: managed-adc
collection: lbvserver
components:
-
name: servicegroup-discovery-comp
type: object
repeat: $parameters.selected-vserver.datasource.collections.servicegroup
repeat-item: svcgrp
repeat-condition: $svcgrp.attributes.servicegroupname == $parameters.selected-vserver.attributes.name + "-svcgrp"
properties:
servicegroupname: $svcgrp.attributes.servicegroupname
-
name: servicegroup-creation-if-not-exists-comp
type: ns::servicegroup
condition: not exists($components.servicegroup-discovery-comp)
properties:
servicegroupname: $parameters.selected-vserver.attributes.name + "-svcgrp"
servicetype: $parameters.selected-vserver.attributes.servicetype
components:
-
name: lbvserver-servicegroup-binding
type: ns::lbvserver_servicegroup_binding
properties:
name: $parameters.selected-vserver.attributes.name
servicegroupname: $parent.properties.servicegroupname
<!--NeedCopy-->
在此 StyleBook 中,components
部分检查与所选负载平衡虚拟服务器名称连接 svcgrp
匹配的服务组名称。
如果所选负载平衡虚拟服务器的名称为 lbv1
,此 StyleBook 将检查名称为 lbv1-svcgrp
的服务组。如果未找到,它将创建一个服务组 lbv1-svcgrp
并与 lbv1
虚拟服务器绑定。
以下表达式获取 NetScaler 实例中的服务组列表。
repeat: $parameters.selected-vserver.datasource.collections.servicegroup
<!--NeedCopy-->
在此表达式中:
-
datasource
:指的是 NetScaler Console 管理的所选 NetScaler 实例。 -
collections
:指的是 NetScaler 实例中的所有实体。 -
servicegroup
:指的是 NetScaler 实例中的服务组。
筛选集合数据:
以下参数部分说明了如何在 StyleBook 定义中的内置数据源集合上指定筛选器。它允许 StyleBook 用户从筛选的集合中选择特定项目。
parameters:
- name: selected-lbvserver
label: Select an existing lbvserver
type: datum
required: true
data-source:
type: managed-adc
collection: lbvserver
collection-filters:
protocol: SSL
<!--NeedCopy-->
在此示例中,datum 参数用于允许用户从 managed-adc 数据源类型中选择 NetScaler 实例和具有 SSL 协议的特定 lbvserver。
StyleBook 用户选择虚拟服务器后,可以按照上一节中说明的相同方式访问所选项目的任何属性。