使用 NetScaler 实例作为数据源
您可以使用托管的 NetScaler 实例作为数据源。 managed-adc
是一种内置数据源类型,可以很容易地用作 ADM 中的数据源。默认情况下,NetScaler 控制台中的每个托管的 NetScaler 实例都是数据源。如果您在创建配置包时需要来自由 NetScaler 控制台管理的现有 NetScaler 的数据,则可以在样书中开始使用这些数据源。
在样书定义中,指定 datum
内置类型参数。因此,您可以在样书中使用数据源类型。样书用户可以选择一个可用于从该源检索数据的数据源。
在不收集的情况下使用内置数据源
parameters:
-
name: selected-adc
label: Select an existing NetScaler
type: datum
required: true
data-source:
type: managed-adc
<!--NeedCopy-->
在示例中,该 datum
参数用于选择由 ADM 管理的任何 NetScaler 实例。managed-adc
内置数据源允许您从由 NetScaler 控制台管理的任何 NetScaler 实例检索数据。
在样书中,您可以访问所选 NetScaler 实例中的任何配置。而且,您可以在同一 NetScaler 或其他 NetScaler 实例上创建或更新配置时使用该配置;这取决于所选的目标 NetScaler 实例。
从数据源中选择集合:
在所选的 NetScaler 实例中,要访问集合,请使用以下表达式:
$parameters.selected-adc.collections.<collection-name>
<!--NeedCopy-->
示例:
$parameters.selected-adc.collections.lbvserver
<!--NeedCopy-->
此表达式返回所选 NetScaler 实例上的 lbvserver
实体列表。例如,您可以遍历此列表以选择满足特定条件的特定 lbvserver
。
不带收藏夹的样书示例
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 控制台管理的 NetScaler 实例,样书用户可以在创建或更新配置包时选择任何 NetScaler。
本样书使用选定的 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
参数用于允许用户选择 NetScaler 实例和数据源类型 managed-adc
中的特定 lbvserver
实例。
当您在小节中定义集合类型时parameters
,样书用户可以从该实例的集合中选择 NetScaler 实例和特定实体。
选择集合的属性:
当样书用户选择虚拟服务器时,样书中的以下表达式可以访问所选项目的任何属性。
$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 参考文档。
选择收藏列表:
除了允许样书用户在托管 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-->
带有集合的样书示例
以下是演示如何使用托管的 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
-
name: services
label: Services
type: object[]
required: true
parameters:
-
name: ip
label: IP address
type: ipaddress
required: true
-
name: port
label: Port
type: tcp-port
required: true
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
-
name: servicegroupmember-comp
type: ns::servicegroup_servicegroupmember_binding
repeat: $parameters.services
repeat-item: service
properties:
servicegroupname: if-then-else($components.servicegroup-discovery-comp, $components.servicegroup-discovery-comp.properties.servicegroupname, $components.servicegroup-creation-if-not-exists-comp.properties.servicegroupname)
ip: $service.ip
port: $service.port
<!--NeedCopy-->
在本样书中,components
部分检查与 svcgrp
连接的所选负载平衡虚拟服务器名称相匹配的服务组名称。
如果所选负载平衡虚拟服务器的名称为 lbv1
,则此样书会检查名称为 lbv1-svcgrp
的服务组。如果找不到,它会创建一个服务组 lbv1-svcgrp
并与 lbv1
虚拟服务器绑定。
以下表达式获取 NetScaler 实例中的服务组列表。
repeat: $parameters.selected-vserver.datasource.collections.servicegroup
<!--NeedCopy-->
在这个表达式中:
-
datasource
: 指由 ADM 管理的选定 NetScaler 实例。 -
collections
:指的是 NetScaler 实例中的所有实体。 -
servicegroup
: 指的是 NetScaler 实例中的服务组。