样书配置
感谢您提供反馈

这篇文章已经过机器翻译.放弃

实例角色

样书在 NetScaler 实例上支持以下配置:

  • 对称配置 - 当配置包应用于多个 NetScaler 实例并且部署在所有实例上的配置都相同时。
  • 非对称配置 - 当配置包应用于多个 NetScaler 实例且部署在所有实例上的配置不同时。例如,在默认的 Microsoft Skype for Business 样书中,必须在每个 NetScaler 实例上部署不同的配置。

样书的“实例角色”功能可帮助您创建非对称配置。在这里,可以为配置包中的每个 NetScaler 实例分配不同的角色。该角色确定 NetScaler 实例接收的配置包的配置对象。

注意事项:

  • 样书中的一组实例角色是在创建样书时定义的。
  • 在创建或更新配置包时,将角色分配给特定的 NetScaler 实例。

目标角色部分

在样书中,“目标角色”通常放在“导入样书”部分之后和“参数”部分之前。样书支持的所有角色都在“目标角色”部分中声明。

在以下样书示例中,在“目标角色”部分中定义了两个角色-A 和 B。

target-roles: - name: A name: B min-targets: 2 max-targets: 5

您可以看到角色 B 还定义了两个可选的子属性 min-targetsmax-targets

min-targets 根据该样书创建配置包时,指定要分配此角色的 NetScaler 实例的最低强制数量。max-targets指定从该样书创建配置包时可以分配此角色的 NetScaler 实例的最大数量。

如果未指定这些子属性,则可以为该角色配置的 NetScaler 实例的数量没有限制。对于最小目标 = 0,与角色关联的配置是可选的。如果 min-targets = 1,则必须进行配置,并且必须为该角色配置至少一个 NetScaler 实例。

角色“默认”

除了明确定义的角色外,所有样书都有一个隐式角色。此隐式角色称为默认角色,其使用方式与样书中的任何其他角色一样。创建配置包时,如果未为 NetScaler 实例分配特定角色,则该实例将被隐式分配给“默认”角色。然后,该实例会接收由具有“默认”角色的组件生成的任何配置对象。

具有角色的组件

定义了样书可以支持的角色(包括“默认”角色)后,可以在样书的组件部分中使用这些角色。如果您希望仅在扮演特定角色的 NetScaler 实例上部署组件,则可以将角色属性指定为该组件的一部分,如以下组件示例所示:

- name: C1 type: ns::lbvserver roles: - A properties: name: lb1 servicetype: HTTP ipv46: 1.1.1.1 port: 80

在此示例中,组件生成在扮演角色 A 的实例上部署的 lbvserver。组件的角色属性为 list,可以为该组件分配多个角色。这些角色本应在样书的 target-roles 部分中声明。

注意

如果样书中的组件未指定角色属性,则无论角色如何,该组件生成的配置对象都将在所有 NetScaler 实例上创建。您可以有效地使用此功能创建可应用于配置包的所有实例的配置对象。

以具有两个角色和四个组件的样书为例。

  • 组件 C1 具有角色 A 和 B
  • 组件 C2 具有作用 B
  • 组件 C3 未定义任何角色
  • 组件 C4 的角色为“默认”

此样书的组件部分如下所示:

components: - name: C1 type: ns::lbvserver roles: - A - B properties: name: lb1 servicetype: HTTP ipv46: 1.1.1.1 port: 80 - name: C2 type: ns::lbvserver roles: - B properties: name: lb2 servicetype: HTTP ipv46: 12.12.12.12 port: 80 - name: C3 type: ns::lbvserver properties: name: lb3 servicetype: HTTP ipv46: 13.13.13.13 port: 80 - name: C4 type: ns::lbvserver roles: - default properties: name: lb4 servicetype: HTTP ipv46: 14.14.14.14 port: 80

组件 C3 未定义角色,这意味着无论其角色如何,该组件都部署在所有实例上。另一方面,组件 C4 具有“默认”角色,这意味着它适用于没有分配明确角色的任何实例。

现在,假设您要使用此样书创建配置包,并将其部署到五个 NetScaler 实例上。您可以通过以下方式将角色分配给实例:

  • 角色 A 被分配给实例 T1、T2、T3 和 T4
  • 角色 B 被分配给实例 T2、T3 和 T4
  • 未为实例 T5 分配任何角色

下图汇总了角色分配,并显示了每个 NetScaler 实例收到的结果配置:

角色分配摘要

组件 C3 部署在所有实例上,无论角色如何,因为该组件没有 roles 属性。

使用“试运行”功能查看和验证:

  • 角色的分配
  • 在每个 NetScaler 实例上创建的配置对象

构建您的样书

样书“demo-target-roles”的完整内容如下:

--- name: demo-target-roles namespace: com.example.stylebooks version: "1.2" schema-version: "1.0" import-stylebooks: - namespace: netscaler.nitro.config prefix: ns version: "10.5" parameters: - name: appname type: string required: true key: true target-roles: - name: A - name: B min-targets: 2 max-targets: 5 components: - name: C1 type: ns::lbvserver roles: - A - B properties: name: lb1 servicetype: HTTP ipv46: 1.1.1.1 port: 80 - name: C2 type: ns::lbvserver roles: - B properties: name: lb2 servicetype: HTTP ipv46: 12.12.12.12 port: 80 - name: C3 type: ns::lbvserver properties: name: lb3 servicetype: HTTP ipv46: 13.13.13.13 port: 80 - name: C4 type: ns::lbvserver roles: - default properties: name: lb4 servicetype: HTTP ipv46: 14.14.14.14 port: 80

下图显示了为示例配置包创建的对象:

在 NetScaler 实例中为配置包创建的对象

使用 API

使用 REST API 时,可以在创建或更新配置包时为每个 NetScaler 实例指定角色,如下所示。在“目标”块中,指定要在其上部署各个组件的特定 NetScaler 实例的 UUID。

"targets": [ { "id": "<ADC-UUID>", "roles": ["A"] }, ]

我们提供了一个完整的示例 REST API 供您参考。

POST /<IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/1.2/demo-target-roles/configpacks

{ "configpack": { "parameters": { "appname": "app1" }, "targets": [ { "id": "f53c35c3-a6bc-4619-b4b4-ad7ab6a94ddb", "roles": ["A"] }, { "id": "c08caa1c-1011-48aa-b8c7-9aed1cd38ed0", "roles": ["A", "B"] }, { "id": "88ac90cb-a5cb-445b-8617-f83d0ef6174e", "roles": ["A", "B"] }, { "id": "bf7b0f74-7a83-4856-86f4-dcc951d3141e", "roles": ["A", "B"] }, { "id": "fa5d97ab-ca29-4adf-b451-06e7a234e3da", "roles": ["default"] } ] } }
本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。
实例角色