这篇文章已经过机器翻译.放弃
使用 NetScaler 实例作为数据源
您可以使用托管 ADC 实例作为数据源。 managed-adc
是一种内置数据源类型,可以很容易地用作 ADM 中的数据源。默认情况下,ADM 中的每个托管 ADC 实例都是数据源。如果您在创建配置包时需要来自 ADM 管理的现有 ADC 的数据,则可以在样书中开始使用这些数据源。
在样书定义中,指定 datum
内置类型参数。因此,您可以在样书中使用数据源类型。样书用户可以选择一个可用于从该源检索数据的数据源。
在不收集的情况下使用内置数据源
parameters:
-
name: selected-adc
label: Select an existing lbvserver
type: datum
required: true
data-source:
type: managed-adc
在示例中,datum
参数用于选择由 ADM 管理的任何 ADC 实例。managed-adc
内置数据源允许您从 NetScaler ADM 管理的任何 ADC 实例中检索数据。
在样书中,您可以从选定的 ADC 实例访问任何配置。而且,您可以在同一 ADC 或不同 ADC 实例上创建或更新配置时使用该配置;这取决于所选的目标 ADC 实例。
从数据源中选择集合:
在选定的 ADC 实例中,要访问集合,请使用以下表达式:
$parameters.selected-adc.collections.<collection-name>
示例:
$parameters.selected-adc.collections.lbvserver
此表达式返回所选 ADC 实例上的 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 custom datasource environment
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
配置包 GUI 显示由 ADM 管理的 ADC 实例,样书用户可以在创建或更新配置包时选择任何 ADC。
本样书通过迭代所有 lbvserver
来使用选定的 ADC。它选择 SSL 虚拟服务器并在每个虚拟服务器上设置允许的版本。
以下表达式允许您遍历 ADC 实例中的 lbvserver
列表。
repeat: $parameters.selected-adc.collections.lbvserver
-
collections
:指 ADC 实例上的实体类型。 -
lbvserver
:指 ADC 实例中的负载平衡虚拟服务器列表。
对于每个 lbvserver
符合条件 (servicetype == SSL
) 的服务器,它会更新虚拟服务器的 SSL 设置以允许特定的 SSL 版本。
将内置数据源与集合一起使用
parameters:
-
name: selected-lbvserver
label: Select an existing ADC
type: datum
required: true
data-source:
type: managed-adc
collection: lbvserver
在本示例中,datum
参数用于选择 ADC 实例和 managed-adc
数据源类型中的 lbvserver
。
当您在 parameters
部分中定义集合类型时,样书用户可以从该实例的集合中选择 ADC 实例和特定实体。
选择集合的属性:
当样书用户选择虚拟服务器时,样书中的以下表达式可以访问所选项目的任何属性。
$parameters.selected-lbvserver.attributes.<attribute-name>
在本示例中,选择 datum
为 lbvserver
。因此,您可以访问 ADC 实体 lbvserver
的任何属性,例如 name
、servicetype
、ipv46
等。
示例:
$parameters.selected-lbvserver.attributes.name
此表达式检索所选负载平衡虚拟服务器的名称。有关 ADC 实体(集合)及其属性的更多信息,请参阅 NetScaler NITRO API 参考资料。
选择收藏列表:
除了样书用户选择的项目外,您还可以在选定 ADC 实例上访问来自相同或不同集合的任何项目。要访问该 ADC 实例上的另一个集合,请在 components
部分中使用以下表达式:
$parameters.selected-lbvserver.datasource.collections.<collection-name>
示例:
$parameters.selected-lbvserver.datasource.collections.csvserver
此表达式返回来自所选 ADC 实例的内容切换虚拟服务器列表。
并且,以下表达式返回 lbvservers
和 servicegroups
之间所有绑定的列表:
$parameters.selected-lbvserver.datasource.collections.lbvserver_servicegroup_binding
带有集合的样书示例
以下是样书示例,用于演示如何使用托管 ADC 实例作为数据源:
---
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 ADC using datum type parameter. Then a servicegroup for the selected lb is created if it does not exist on the ADC. 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
在本样书中,components
部分检查与 svcgrp
连接的所选负载平衡虚拟服务器名称相匹配的服务组名称。
如果所选负载平衡虚拟服务器的名称为 lbv1
,则此样书会检查名称为 lbv1-svcgrp
的服务组。如果找不到,它会创建一个服务组 lbv1-svcgrp
并与 lbv1
虚拟服务器绑定。
以下表达式获取 ADC 实例中的服务组列表。
repeat: $parameters.selected-vserver.datasource.collections.servicegroup
-
datasource
:指由 ADM 管理的选定 ADC 实例。 -
collections
:指 ADC 实例中的实体。 -
servicegroup
:指 ADC 实例中的服务组。