样书配置

使用 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 数据源,无需收集

本样书使用选定的 NetScaler 并对所有 lbvserver 实体进行迭代。它选择 SSL 虚拟服务器并在每个虚拟服务器上设置允许的 SSL 协议版本。

以下表达式允许您遍历 NetScaler 实例中的 lbvserver 实体列表。

repeat: $parameters.selected-adc.collections.lbvserver
<!--NeedCopy-->
  • collections:指的是 NetScaler 实例上的所有实体类型。例如 csvserverlbmonitorservicegroup 等等。

  • 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-->

在本示例中,选择 datumlbvserver。因此,您可以访问 NetScaler 实体 lbvserver 的任何属性,例如 nameservicetypeipv46 等。

示例:

$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 实例中的内容交换虚拟服务器列表。

并且,以下表达式返回 lbvserversservicegroups 之间所有绑定的列表:

$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 实例中的服务组。

使用 NetScaler 实例作为数据源