将 StyleBook 的配置包迁移到另一个 StyleBook

Last published : Oct 06, 2026
在 NetScaler Console 中,配置包始终绑定到创建它们的 StyleBook。对配置包的任何更新只能通过配置包所绑定的 StyleBook 进行。NetScaler Console 现在允许您将现有配置包迁移到新的 StyleBook。新的 StyleBook 可以是当前绑定到配置包的 StyleBook 的更原始版本。或者,您也可以将配置包迁移到完全不同的 StyleBook。
例如,您创建了一个名为 example-lb 的 StyleBook。此 StyleBook 用于在 NetScaler 实例上部署基本的负载均衡器配置。您从该 StyleBook 在 NetScaler 实例上创建了一个配置包 CP1。后来,您意识到您的 StyleBook 不包含监控配置。因此,您现在创建了一个名为 example-lb-mon 的 StyleBook。此 StyleBook 具有与 example-lb StyleBook 相同的负载均衡器配置,但增加了配置监视器的功能。
现在您想更新在配置包 CP1 中创建的现有配置以添加一些监视器。以前,您必须删除配置包 CP1 并从新的 StyleBook 创建配置包 CP2,才能将监视器添加到您的配置中。删除 CP1 会导致删除一个或多个 NetScaler 实例上在配置包 CP1 中创建的所有配置。以前,您必须通过新的 StyleBook 重新创建新的配置包,并为所有参数键入值。
相反,您现在可以将现有配置包 CP1 迁移到新的 example-lb-mon StyleBook。您的新 StyleBook 可以配置监视器详细信息。只有那些与监视器相关的配置对象才会添加到部署了配置包的 NetScaler 实例中。您现在只需提供监视器详细信息。NetScaler 实例上已部署但未更改的现有配置不受影响。

迁移配置包

将使用 example-lb StyleBook 创建的配置包迁移到 example-lb-mon StyleBook

  1. 在 NetScaler Console 中,导航到 应用程序 \> 配置。“配置”页面显示系统中存在的所有配置包。
  2. 向下滚动以找到您之前创建的 example-lb 配置包,然后单击“Migrate Configpack”。
  3. “Choose target StyleBook for migration”页面打开,其中列出了 NetScaler Console 中所有可用的 StyleBook。向下滚动以找到 example-lb-mon StyleBook,然后单击“Select StyleBook”。您也可以通过键入 example-lb-mon 来搜索 StyleBook。
    如果您从一个 StyleBook 迁移到另一个 StyleBook,两个 StyleBook 中的所有参数可能不具有相同的结构。如果参数结构相似,则以前的值会自动保留在参数字段中。新 StyleBook 中的少数参数可能是新的,或者它们的结构可能发生了变化。在这种情况下,您必须手动填写 StyleBook 参数的值。例如,下图显示了 example-lb StyleBook 的参数。
    本地化图像
    下图显示了将配置包迁移到 example-lb-mon StyleBook 后的参数。
    本地化图像
    在这种情况下,您可以看到 StyleBook 保留了基本负载均衡器配置的旧值。但是,您必须手动键入监视器参数的值。
  4. 输入用于在该实例上创建监视器的新参数的值。
  5. 在 目标实例 下,单击并选择要运行配置的 NetScaler 实例的 IP 地址。请注意,您可以通过指定所需数量的目标实例,将配置部署到多个 NetScaler 上。
  6. 单击 试运行。对象 页面显示将从 NetScaler 实例中新建、修改或删除的对象。
  7. 单击 创建 以创建或更新所选实例的配置。如果目标实例是新的,则会创建配置包。否则,将更新部署在实例上的现有配置。
    注意:
    您还可以单击刷新图标以添加最近发现的 NetScaler 实例。因此,这些实例会立即在此窗口的实例列表中可用。刷新图标目前仅在 NetScaler Console 上可用。
您还可以将配置包从 StyleBook 的一个版本迁移到下一个版本。在此,您可能还需要输入新版本中存在的任何新必需参数的值。您还可以将配置包迁移到 StyleBook 的旧版本。在这种情况下,旧 StyleBook 中不存在的额外参数将被删除。对象 页面显示从配置中删除的任何对象。
成功迁移后,ConfigPack 将绑定到新的 StyleBook。
您可以看到配置包的名称和配置包 ID 与之前相同。但 NetScaler Console 会将 StyleBook 名称从 example-lb 更新为 example-lb-mon。

构建您的 StyleBook

example-lb StyleBook 的完整内容如下所示,供您参考:
name: example-lb
namespace: examples.stylebooks
version: "1.0"
display-name: Basic Load Balancer App
description: This is an example StyleBook that creates a load balancer application
schema-version: "1.0"
import-stylebooks:
  -
    namespace: com.citrix.adc.stylebooks
    prefix: stlb
    version: "1.0"
parameters-default-sources:
  - stlb::lb
components:
  -
    name: lb-comp
    type: stlb::lb
    description: Uses the default lb StyleBook to build the typical lb configuration objects
    properties-default-sources:
      - $parameters
example-lb-mon StyleBook 的完整内容如下所示,供您参考:
name: example-lb-mon
namespace: examples.stylebooks
version: "1.0"
description: This is an example StyleBook that creates a load balancer application with monitors
display-name: Basic Load Balancer App with Monitors
schema-version: "1.0"
import-stylebooks:
  -
    namespace: netscaler.nitro.config
    prefix: ns
    version: "10.5"
  -
    namespace: com.citrix.adc.stylebooks
    prefix: stlb
    version: "1.0"
  -
    namespace: com.citrix.adc.commontypes
    prefix: cmtypes
    version: "1.0"
parameters-default-sources:
  - stlb::lb
parameters:
  -
    name: monitors
    label: "List of Monitors"
    description: "List of Monitors to monitor Application Servers"
    type: cmtypes::monitor[]
substitutions:
  mon-name(appname, monname): $appname + "-mon-" + $monname
components:
  -
    name: lb-comp
    type: stlb::lb
    description: Uses the default lb StyleBook to build the typical lb configuration objects
    properties-default-sources:
      - $parameters
  -
    name: monitors-comp
    type: cmtypes::monitor
    condition: $parameters.monitors
    repeat: $parameters.monitors
    repeat-item: mon
    repeat-index: ndx
    description: Builds a list of NetScaler monitor objects and binds them to the servicegroup of this LB config
    properties-default-sources:
      - $mon
    properties:
        monitorname: $substitutions.mon-name($parameters.lb-appname, $mon.monitorname)
    components:
      -
        name: monitor-svcg-binding-comp
        condition:  $parameters.svc-servers
        type: ns::servicegroup_lbmonitor_binding
        properties:
          servicegroupname: $components.lb-comp.outputs.servicegroup.properties.servicegroupname
          monitor_name: $parent.properties.monitorname