Rôles d’instance
Dans NetScaler Console, il peut arriver que vous deviez configurer plusieurs instances NetScaler pour une seule application, mais aussi que chaque instance NetScaler nécessite une configuration différente à déployer. Un exemple d’un tel cas est le StyleBook par défaut de Microsoft Skype for Business.
Les StyleBooks prennent actuellement en charge la capacité de créer un pack de configuration et d’appliquer la même configuration sur plusieurs instances NetScaler. Un tel scénario, où la configuration est identique sur toutes les instances NetScaler, peut être qualifié de configuration symétrique.
Désormais, grâce à la fonctionnalité « rôles d’instance » des StyleBooks, vous pouvez créer une configuration asymétrique, c’est-à-dire un pack de configuration qui peut être appliqué sur plusieurs instances NetScaler, mais avec des configurations différentes sur différentes instances NetScaler.
Lorsqu’un StyleBook avec la fonctionnalité de rôles d’instance est utilisé pour créer un pack de configuration, chaque instance NetScaler d’un pack de configuration peut se voir attribuer un rôle différent. Ce rôle détermine les objets de configuration du pack de configuration que l’instance NetScaler recevra.
Points à noter :
- L’ensemble des rôles d’instance dans un StyleBook est défini 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 « target-roles »
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 « import-StyleBooks » d’un StyleBook et avant la section des paramètres.
Dans l’exemple de 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
<!--NeedCopy-->
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 NetScaler qui doivent se voir attribuer ce rôle lors de la création d’un pack de configuration à partir de ce StyleBook, et max-targets spécifie le nombre maximum d’instances NetScaler qui peuvent se voir attribuer ce rôle 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, il n’y a aucune limite sur le nombre d’instances NetScaler pouvant être configurées pour ce rôle. Si min-targets = 0, la configuration associée à ce rôle est facultative, et si min-targets = 1, alors cette configuration est obligatoire et au moins une instance NetScaler doit être configurée pour ce rôle.
Rôle « default »
En plus des rôles explicitement définis, il existe un rôle implicite que tous les StyleBooks possèdent, et ce rôle est appelé 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 pack de configuration, si une instance NetScaler ne se voit pas attribuer un rôle spécifique, l’instance est implicitement affectée au rôle « default ». L’instance recevra alors tous les objets de configuration générés par les composants qui ont le rôle « default ».
Composants avec rôles
Une fois les rôles qu’un StyleBook peut prendre en charge (y compris le rôle « default ») 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 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 roles 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 « target-roles » du StyleBook.
Remarque : Si un composant dans un StyleBook ne spécifie pas d’attribut role, les objets de configuration générés par le composant sont créés sur toutes les instances NetScaler, 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 pack de configuration.
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 « default ».
La section des 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
<!--NeedCopy-->
Notez que le composant C3 n’a pas de rôle défini, ce qui signifie qu’il 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 attribué.
Considérez maintenant que vous souhaitez créer un pack de configuration à l’aide de ce StyleBook et le déployer sur cinq instances NetScaler. À ce stade, 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.
- L’instance T5 ne se voit attribuer aucun rôle.
L’image suivante résume les attributions de rôles et montre la configuration résultante que chaque instance NetScaler recevra :

Notez que le composant C3 est déployé sur toutes les instances, quel que soit leur rôle, car ce composant n’avait pas d’attribut roles.
Vous pouvez également utiliser la fonctionnalité « Dry Run » (exécution à blanc) lors de la création d’un pack de configuration pour afficher et vérifier l’attribution correcte des rôles et les objets de configuration qui seront créés sur chaque instance NetScaler.
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
<!--NeedCopy-->
L’image suivante montre les objets créés pour un exemple de 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 « targets », 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 pour votre référence.
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"]
}
]
}
}
<!--NeedCopy-->