Citrix Application Delivery Management service

Rôles d’instance

Dans Citrix Application Delivery Management (ADM), il peut y avoir un scénario dans lequel vous devez configurer plusieurs instances Citrix ADC pour une seule application, mais également dans lequel chaque instance ADC nécessite un déploiement d’une configuration différente. Un exemple de ce cas est le Microsoft Skype for Business StyleBook par défaut.

StyleBooks prend actuellement en charge la possibilité de créer un configpack et d’appliquer la même configuration sur plusieurs instances Citrix ADC. Un tel scénario où la configuration est identique sur toutes les instances ADC, peut être appelé configuration symétrique.

Maintenant, avec la fonctionnalité « rôles d’instance » de StyleBooks, vous pouvez créer une configuration asymétrique, c’est-à-dire un configpack qui peut être appliqué sur plusieurs instances ADC, mais avec différentes configurations sur différentes instances ADC.

Lorsqu’une fonctionnalité StyleBook avec des rôles d’instance est utilisée pour créer un configpack, chaque instance ADC d’un configpack peut se voir attribuer un rôle différent. Ce rôle détermine les objets de configuration du configpack que l’instance ADC recevra.

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 affectés à une instance ADC spécifique lors de la création ou de la mise à jour du configpack.

Section Rôles de cible

Une nouvelle section dans un StyleBook appelée « target-roles » est introduite, où tous les rôles pris en charge par le StyleBook sont déclarés.

Cette section est généralement placée après la section « Importer des StyleBooks » d’un StyleBook et avant la section Paramètres.

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

target-roles:

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

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

Bien que ces deux sous-propriétés soient facultatives, min-targets spécifie le nombre minimum obligatoire d’instances ADC qui doivent être affectées à ce rôle lors de la création d’un configpack à partir de ce StyleBook, et max-targets spécifient le nombre maximal d’instances ADC pouvant être affectées à ce rôle lors de la création d’un configpack de ce StyleBook.

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

Rôle « par défaut »

En plus des rôles explicitement définis, il existe un rôle implicite que tous les StyleBooks ont, et ce rôle est appelé comme rôle par défaut. Ce rôle peut être utilisé comme n’importe quel autre rôle dans un StyleBook. Lors de la création d’un configpack, si une instance ADC n’est pas affectée avec un rôle spécifique, l’instance est implicitement affectée au rôle « par défaut ». L’instance recevra désormais tous les objets de configuration générés par les composants ayant 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 Composants d’un StyleBook. Si vous souhaitez qu’un composant soit déployé uniquement sur des instances ADC qui jouent un certain rôle, vous pouvez spécifier l’attribut role dans le cadre du composant, comme illustré dans l’exemple suivant d’un composant :

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

Dans l’exemple ci-dessus, le composant génère un « lbvserver » qui sera déployé sur les instances jouant le rôle A. Notez que l’attribut role d’un composant est une liste et qu’un composant peut se voir attribuer plusieurs rôles. Ces rôles auraient été déclarés dans la section « rôles cibles » 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 Citrix ADC quel que soit leur rôle. Vous pouvez utiliser cette fonctionnalité efficacement pour créer des objets de configuration qui peuvent être appliqués à toutes les instances d’un configpack.

Supposons qu’il existe un StyleBook avec deux rôles définis - A et B, et qui contient quatre composants.

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

La section Composants de ce StyleBook est reproduite ci-dessous :

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

Notez que le composant C3 n’a pas de rôle défini, 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 n’a pas de rôle explicite qui lui est assigné.

Maintenant, considérez que vous souhaitez créer un configpack à l’aide de ce StyleBook et déployez-le sur cinq instances ADC. À ce stade, vous pouvez affecter les rôles aux instances de la manière suivante :

  • Le rôle A est affecté aux instances T1, T2, T3 et T4
  • Le rôle B est attribué aux instances T2, T3 et T4
  • L’instance T5 n’est pas affectée à aucun rôle

L’image suivante résume les attributions de rôle et montre la configuration résultante que chaque instance ADC recevra :

image localisée

Notez que le composant C3 est déployé sur toutes les instances quel que soit le rôle, car ce composant ne possédait aucun attribut role.

L’image suivante montre l’attribution de rôles lors de la création d’un exemple de configpack :

image localisée

Vous pouvez également utiliser la fonction « Exécution à sec » lors de la création d’un configpack pour afficher et vérifier l’attribution correcte des rôles et des objets de configuration qui seront créés sur chaque instance ADC.

Créez votre StyleBook

Le contenu complet du StyleBook « demo-target-roles » est fourni ci-dessous :

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

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

image localisée

Utilisation des API

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

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

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

POST /<ADM-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"]
        }
      ]
    }
}

Rôles d’instance