Roles de instancia

Last published : Oct 02, 2026
En NetScaler Console, puede haber un escenario en el que tenga que configurar varias instancias de NetScaler para una sola aplicación, pero también en el que cada instancia de NetScaler requiera una configuración diferente para implementarse en ellas. Un ejemplo de tal caso es el StyleBook predeterminado de Microsoft Skype for Business.
Actualmente, los StyleBooks admiten la capacidad de crear un paquete de configuración y aplicar la misma configuración en varias instancias de NetScaler. Un escenario en el que la configuración es idéntica en todas las instancias de NetScaler puede denominarse configuración simétrica.
Ahora, con la función de «roles de instancia» de los StyleBooks, puede crear una configuración asimétrica, es decir, un paquete de configuración que se puede aplicar en varias instancias de NetScaler, pero con diferentes configuraciones en diferentes instancias de NetScaler.
Cuando se utiliza un StyleBook con la función de roles de instancia para crear un paquete de configuración, a cada instancia de NetScaler en un paquete de configuración se le puede asignar un rol diferente. Este rol determina los objetos de configuración del paquete de configuración que recibirá la instancia de NetScaler.
Puntos a tener en cuenta:
  • El conjunto de roles de instancia en un StyleBook se define al crear el StyleBook.
  • Los roles se asignan a una instancia de NetScaler específica al crear o actualizar el paquete de configuración.

Sección de roles de destino

Se introduce una nueva sección en un StyleBook llamada «target-roles», donde se declaran todos los roles admitidos por el StyleBook.
Esta sección se suele colocar después de la sección «import-StyleBooks» de un StyleBook y antes de la sección de parámetros.
En el siguiente ejemplo de StyleBook, se definen dos roles dentro de la sección «target-roles»: A y B.
target-roles:

  -
   name: A
   name: B
     min-targets: 2
     max-targets: 5
Puede ver que el rol B también define dos subpropiedades opcionales, min-targets y max-targets.
Aunque estas dos subpropiedades son opcionales, min-targets especifica el número mínimo obligatorio de instancias de NetScaler a las que se debe asignar este rol al crear un paquete de configuración a partir de este StyleBook, y max-targets especifica el número máximo de instancias de NetScaler a las que se puede asignar este rol al crear un paquete de configuración a partir de este StyleBook.
Si no se especifican estas subpropiedades, no hay límite en el número de instancias de NetScaler que se pueden configurar para ese rol. Si min-targets = 0, la configuración asociada a ese rol es opcional y si min-targets = 1, entonces esa configuración es obligatoria y al menos una instancia de NetScaler debe configurarse para ese rol.

Rol «default»

Además de los roles definidos explícitamente, existe un rol implícito que tienen todos los StyleBooks, y ese rol se denomina rol «default». Este rol se puede utilizar como cualquier otro rol en un StyleBook. Al crear un paquete de configuración, si a una instancia de NetScaler no se le asigna un rol específico, la instancia se asigna implícitamente al rol «default». La instancia recibirá ahora cualquier objeto de configuración generado por los componentes que tengan el rol «default».

Componentes con roles

Una vez definidos los roles que un StyleBook puede admitir (incluido el rol «default»), los roles se pueden utilizar en la sección de componentes de un StyleBook. Si quiere que un componente se implemente solo en instancias de NetScaler que desempeñen un determinado rol, entonces puede especificar el atributo de roles como parte del componente, como se ilustra en el siguiente ejemplo de un componente:
-
  name: C1
  type: ns::lbvserver
  roles:
    - A
  properties:
    name: lb1
    servicetype: HTTP
    ipv46: 1.1.1.1
    port: 80
En el ejemplo anterior, el componente genera un «lbvserver» que se implementará en instancias que desempeñen el rol A. Tenga en cuenta que el atributo de roles de un componente es una lista, y a un componente se le pueden asignar varios roles. Estos roles se habrían declarado en la sección «target-roles» del StyleBook.
Nota: Si un componente en un StyleBook no especifica un atributo de rol, los objetos de configuración generados por el componente se crean en todas las instancias de NetScaler, independientemente de su rol. Puede utilizar esta función de forma eficaz para crear objetos de configuración que se puedan aplicar a todas las instancias de un paquete de configuración.
Supongamos que hay un StyleBook con dos roles definidos, A y B, y que contiene cuatro componentes.
  • El componente C1 tiene los roles A y B
  • El componente C2 tiene el rol B
  • El componente C3 no tiene ningún rol definido
  • El componente C4 tiene el rol «default»
La sección de componentes de este StyleBook se reproduce a continuación:
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
Tenga en cuenta que el componente C3 no tiene un rol definido, lo que significa que el componente se implementa en todas las instancias, independientemente de su rol. Por otro lado, el componente C4 tiene el rol «default», lo que significa que se aplica a cualquier instancia que no tenga un rol explícito asignado.
Ahora, considere que quiere crear un paquete de configuración utilizando este StyleBook, e implementarlo en cinco instancias de NetScaler. En esta etapa, puede asignar los roles a las instancias de la siguiente manera:
  • El rol A se asigna a las instancias T1, T2, T3 y T4
  • El rol B se asigna a las instancias T2, T3 y T4
  • La instancia T5 no tiene ningún rol asignado
La siguiente imagen resume las asignaciones de roles y muestra la configuración resultante que recibirá cada instancia de NetScaler:
imagen localizada
Tenga en cuenta que el componente C3 se implementa en todas las instancias, independientemente del rol, ya que este componente no tenía ningún atributo de roles.
También puede usar la función «Ejecución en seco» al crear un paquete de configuración para ver y verificar la asignación correcta de roles y los objetos de configuración que se crearán en cada instancia de NetScaler.

Cree su StyleBook

A continuación se muestra el contenido completo del StyleBook "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
La siguiente imagen muestra los objetos creados para un paquete de configuración de ejemplo:
imagen localizada

Uso de API

Al usar la API de REST, puede especificar roles para cada instancia de NetScaler al crear o actualizar el paquete de configuración de la siguiente manera. En el bloque “targets”, especifique el UUID de la instancia de NetScaler específica en la que desea implementar los componentes individuales.
"targets": [
            {
             "id": "<ADC-UUID>",
             "roles": ["A"]
            },
           ]
Se proporciona una API de REST de ejemplo completa para su referencia.
POST /<Console-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"]
        }
      ]
    }
}