Application Delivery Management

将 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。

不带集合的内置 NetScaler 数据源

此 StyleBook 使用选定的 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 参数用于允许用户从 managed-adc 数据源类型中选择 NetScaler 实例和特定的 lbvserver

当您在 parameters 部分定义集合类型时,StyleBook 用户可以选择 NetScaler 实例和该实例上集合中的特定实体。

带集合的内置实例数据源

访问选定项的属性

当 StyleBook 用户选择虚拟服务器时,StyleBook 中的以下表达式可以访问选定项的任何属性。

$parameters.selected-lbvserver.attributes.<attribute-name>
<!--NeedCopy-->

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

示例:

$parameters.selected-lbvserver.attributes.ipv46
<!--NeedCopy-->

此表达式检索选定的负载平衡虚拟服务器的 IP。有关 NetScaler 实体(集合)及其属性的更多信息,请参阅 NetScaler NITRO API 参考

从集合中选择多个项:

以下 parameters 部分允许 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 实例中的内容交换虚拟服务器列表。

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

$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 负载平衡 StyleBook 与服务绑定"
description: " StyleBook 定义了一个典型的负载平衡应用程序配置,其中我们允许用户使用 datum 类型参数在 NetScaler 上选择一个现有的 lbvserver。然后,如果选定的 lb 的服务组在 NetScaler 上不存在,则会创建一个。最后,选定的 lbvserver 将绑定到该服务"
schema-version: "1.0"
import-stylebooks:
  -
    namespace: netscaler.nitro.config
    prefix: ns
    version: "10.5"

parameters:
  -
    name: selected-vserver
    label: "选择现有 VServer"
    description: "要绑定到 ADC 上的服务的负载平衡应用程序 VServer"
    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 实例中的服务组。

筛选集合数据:

以下 parameters 部分解释了如何在 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 用户选择虚拟服务器后,可以按照上一节中解释的相同方式访问选定项的任何属性。

将 NetScaler 实例用作数据源