Configuration de StyleBook

Rôles d’instance

StyleBooks prend en charge les configurations suivantes sur les instances NetScaler :

  • Configuration symétrique : lorsqu’un pack de configuration est appliqué sur plusieurs instances NetScaler et que les configurations déployées sur toutes les instances sont les mêmes.
  • Configuration asymétrique : lorsqu’un pack de configuration est appliqué à plusieurs instances NetScaler et que les configurations déployées sur toutes les instances sont différentes. Par exemple, dans le StyleBook par défaut de Microsoft Skype for Business, une configuration différente doit être déployée sur chaque instance NetScaler.

La fonctionnalité « rôles d’instance » de StyleBooks vous aide à créer une configuration asymétrique. Ici, chaque instance NetScaler du pack de configuration peut se voir attribuer un rôle différent. Le rôle détermine les objets de configuration du pack de configuration que l’instance NetScaler reçoit.

Points à noter :

  • L’ensemble des rôles d’instance dans un StyleBook sont définis lors de la création du StyleBook.
  • Les rôles sont attribués à une instance NetScaler spécifique lors de la création ou de la mise à jour du pack de configuration.

Section Rôles de cible

Les « rôles cibles » sont généralement placés après la section « Import-StyleBooks » et avant la section « paramètres » d’un StyleBook. Tous les rôles pris en charge par le StyleBook sont déclarés dans la section « rôles cibles ».

Dans l’exemple de StyleBook suivant, deux rôles sont définis dans la section « rôles cibles » : A et B.

target-roles:

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

Vous pouvez voir que le rôle B définit également deux sous-propriétés facultatives, min-targets et max-targets.

min-targets spécifiez le nombre minimum obligatoire d’instances NetScaler à attribuer à ce rôle lors de la création d’un pack de configuration à partir de ce StyleBook. max-targetsspécifiez le nombre maximum d’instances NetScaler auxquelles ce rôle peut être attribué lors de la création d’un pack de configuration à partir de ce StyleBook.

Si ces sous-propriétés ne sont pas spécifiées, le nombre d’instances NetScaler pouvant être configurées pour ce rôle n’est pas limité. Pour min-targets = 0, la configuration associée au rôle est facultative. Pour min-targets = 1, la configuration est obligatoire et au moins une instance NetScaler doit être configurée pour le rôle.

Rôle « par défaut »

Outre les rôles définis de manière explicite, tous les StyleBooks ont un rôle implicite. Ce rôle implicite est appelé rôle par défaut et est utilisé comme n’importe quel autre rôle dans un StyleBook. Lors de la création d’un pack de configuration, si aucun rôle spécifique n’est attribué à une instance NetScaler, elle est implicitement affectée au rôle « par défaut ». L’instance reçoit ensuite tous les objets de configuration générés par les composants qui ont le rôle « par défaut ».

Composants avec des rôles

Une fois que les rôles qu’un StyleBook peut prendre en charge (y compris le rôle « par défaut ») sont définis, les rôles peuvent être utilisés dans la section des composants d’un StyleBook. Si vous souhaitez qu’un composant soit déployé uniquement sur les instances NetScaler qui jouent un certain rôle, vous pouvez spécifier l’attribut roles dans le cadre du composant, comme illustré dans l’exemple de composant suivant :

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

Dans cet exemple, le composant génère un lbvserver est déployé sur des instances jouant le rôle A. L’attribut roles d’un composant est a list, et plusieurs rôles peuvent être attribués au composant. Ces rôles auraient été déclarés dans la target-roles section du StyleBook.

Remarque

Si un composant d’un StyleBook ne spécifie pas d’attribut de rôle, les objets de configuration générés par le composant sont créés sur toutes les instances de NetScaler, quels que soient les rôles. Vous pouvez utiliser cette fonctionnalité efficacement pour créer des objets de configuration qui peuvent être appliqués à toutes les instances d’un pack de configuration.

Prenons l’exemple d’un StyleBook avec deux rôles et quatre composants.

  • Le composant C1 a les rôles A et B
  • Le composant C2 a le rôle B
  • Aucun rôle n’est défini pour le composant C3
  • Le composant C4 a le rôle « par défaut »

La section des composants de ce StyleBook est la suivante :

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

Aucun rôle n’est défini pour le composant C3, ce qui signifie que le composant est déployé sur toutes les instances, quel que soit leur rôle. D’autre part, le composant C4 a le rôle « default », ce qui signifie qu’il est appliqué à toute instance qui ne lui a pas de rôle explicite.

Maintenant, considérez que vous souhaitez créer un pack de configuration à l’aide de ce StyleBook et le déployer sur cinq instances NetScaler. Vous pouvez attribuer les rôles aux instances de la manière suivante :

  • Le rôle A est attribué aux instances T1, T2, T3 et T4
  • Le rôle B est attribué aux instances T2, T3 et T4
  • Aucun rôle n’est attribué à l’instance T5

L’image suivante récapitule les attributions de rôles et montre la configuration obtenue que reçoit chaque instance NetScaler :

Synthèse des affectations de rôles

Le composant C3 est déployé sur toutes les instances, quel que soit leur rôle, car ce composant ne possède aucun roles attribut.

Utilisez la fonction « Dry Run » pour visualiser et vérifier :

  • L’attribution des rôles
  • Les objets de configuration créés sur chaque instance NetScaler

Créez votre StyleBook

Le contenu complet des « rôles cibles de démonstration » du StyleBook est le suivant :

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

L’image suivante montre les objets créés pour un exemple de pack de configuration :

Objets créés dans une instance NetScaler pour un pack de configuration

Utilisation des API

Lorsque vous utilisez l’API REST, vous pouvez spécifier des rôles pour chaque instance NetScaler lors de la création ou de la mise à jour du pack de configuration comme suit. Dans le bloc « cibles », spécifiez l’UUID de l’instance NetScaler spécifique sur laquelle vous souhaitez déployer les composants individuels.

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

Un exemple complet d’API REST est fourni à titre de référence.

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-->
Rôles d’instance