Configuración de StyleBook

Roles de instancia

StyleBooks admite las siguientes configuraciones en las instancias de NetScaler:

  • Configuración simétrica: cuando se aplica un paquete de configuración a varias instancias de NetScaler y las configuraciones implementadas en todas las instancias son las mismas.
  • Configuración asimétrica: cuando se aplica un paquete de configuración a varias instancias de NetScaler y las configuraciones implementadas en todas las instancias son diferentes. Por ejemplo, en el StyleBook predeterminado de Microsoft Skype for Business, se debe implementar una configuración diferente en cada instancia de NetScaler.

La función “roles de instancia” de StyleBooks le ayuda a crear una configuración asimétrica. Aquí, a cada instancia de NetScaler del paquete de configuración se le puede asignar una función diferente. La función determina los objetos de configuración del paquete de configuración que recibe la instancia de NetScaler.

Puntos a tener en cuenta:

  • El conjunto de roles de instancia en un StyleBook se define al crear el StyleBook.
  • Las funciones se asignan a una instancia de NetScaler específica al crear o actualizar el paquete de configuración.

Sección de roles de destino

Los “roles de destino” suelen colocarse después de la sección “Importar libros de estilos” y antes de la sección “parámetros” de un StyleBook. Todos los roles admitidos por el StyleBook se declaran en la sección “roles de destino”.

En el siguiente ejemplo de StyleBook, se definen dos funciones en la sección “funciones de destino”: A y B.

target-roles:

  -
   name: A
   name: B
     min-targets: 2
     max-targets: 5
<!--NeedCopy-->

Puede ver que el rol B también define dos subpropiedades opcionales, min-targets y max-targets.

min-targets especifique el número mínimo obligatorio de instancias de NetScaler para asignar esta función al crear un paquete de configuración a partir de este StyleBook. max-targetsespecifique el número máximo de instancias de NetScaler a las que se puede asignar esta función 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 esa función. Para objetivos mínimos = 0, la configuración asociada al rol es opcional. Para min-targets = 1, la configuración es obligatoria y se debe configurar al menos una instancia de NetScaler para el rol.

Función “predeterminada”

Además de las funciones definidas explícitamente, hay una función implícita que tienen todos los StyleBooks. Este rol implícito se denomina rol predeterminado y se usa como cualquier otro rol en un StyleBook. Al crear un paquete de configuración, si a una instancia de NetScaler no se le asigna una función específica, la instancia se asigna implícitamente a la función «predeterminada». A continuación, la instancia recibe todos los objetos de configuración generados por los componentes que tienen la función “predeterminada”.

Componentes con roles

Una vez definidos los roles que puede admitir un StyleBook (incluido el rol “predeterminado”), los roles se pueden usar en la sección de componentes de un StyleBook. Si desea que un componente se implemente solo en instancias de NetScaler que desempeñen una función determinada, puede especificar el atributo roles como parte del componente, como se muestra 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
<!--NeedCopy-->

En este ejemplo, el componente genera un lbvserver se implementa en las instancias que desempeñan la función A. El atributo roles de un listcomponente es a y se le pueden asignar varias funciones. Estas funciones se habrían declarado en la target-roles sección del StyleBook.

Nota

Si un componente de 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 las funciones. Puede utilizar esta función de manera eficaz para crear objetos de configuración que se puedan aplicar a todas las instancias de un paquete de configuración.

Pensemos en un StyleBook con dos funciones y cuatro componentes.

  • El componente C1 tiene los roles A y B
  • El componente C2 tiene el rol B
  • El componente C3 no tiene ninguna función definida
  • El componente C4 tiene la función “predeterminada”

La sección de componentes de este StyleBook es la siguiente:

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
<!--NeedCopy-->

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 “predeterminado”, lo que significa que se aplica a cualquier instancia que no tenga asignado un rol explícito.

Ahora, considere que desea crear un paquete de configuración con este StyleBook e implementarlo en cinco instancias de NetScaler. Puede asignar las funciones a las instancias de la siguiente manera:

  • La función A se asigna a las instancias T1, T2, T3 y T4
  • La función B se asigna a las instancias T2, T3 y T4
  • La instancia T5 no tiene asignada ninguna función

La siguiente imagen resume las asignaciones de funciones y muestra la configuración resultante que recibe cada instancia de NetScaler:

Resumen de asignaciones de roles

El componente C3 se implementa en todas las instancias, independientemente del rol, ya que este componente no tenía ningún roles atributo.

La siguiente imagen muestra la asignación de funciones al crear un paquete de configuración de ejemplo:

Paquete de configuración para una asignación de roles

Utilice la función “Ejecución en seco” para ver y verificar:

  • La asignación de funciones
  • Los objetos de configuración creados en cada instancia de NetScaler

Crea su StyleBook

El contenido completo del StyleBook “demo-target-roles” es el siguiente:

---
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
<!--NeedCopy-->

La siguiente imagen muestra los objetos creados para un paquete de configuración de ejemplo:

Objetos creados en la instancia de NetScaler para un paquete de configuración

Uso de API

Al usar la API REST, puede especificar funciones para cada instancia de NetScaler al crear o actualizar el paquete de configuración de la siguiente manera. En el bloque “destinos”, especifique el UUID de la instancia específica de NetScaler en la que quiere implementar los componentes individuales.

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

Se proporciona una API REST de muestra completa para su referencia.

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"]
        }
      ]
    }
}
<!--NeedCopy-->
Roles de instancia