Instanzrollen
In der NetScaler Console kann es ein Szenario geben, in dem Sie mehrere NetScaler-Instanzen für eine einzelne Anwendung konfigurieren müssen, aber auch, dass jede NetScaler-Instanz eine andere Konfiguration erfordert, die auf ihr bereitgestellt werden muss. Ein Beispiel für einen solchen Fall ist das standardmäßige Microsoft Skype for Business StyleBook.
StyleBooks unterstützen derzeit die Möglichkeit, ein Konfigurationspaket zu erstellen und dieselbe Konfiguration auf mehreren NetScaler-Instanzen anzuwenden. Ein solches Szenario, bei dem die Konfiguration auf allen NetScaler-Instanzen identisch ist, kann als symmetrische Konfiguration bezeichnet werden.
Mit der Funktion „Instanzrollen“ von StyleBooks können Sie jetzt eine asymmetrische Konfiguration erstellen, d. h. ein Konfigurationspaket, das auf mehreren NetScaler-Instanzen angewendet werden kann, jedoch mit unterschiedlichen Konfigurationen auf verschiedenen NetScaler-Instanzen.
Wenn ein StyleBook mit der Funktion „Instanzrollen“ zum Erstellen eines Konfigurationspakets verwendet wird, kann jeder NetScaler-Instanz in einem Konfigurationspaket eine andere Rolle zugewiesen werden. Diese Rolle bestimmt die Konfigurationsobjekte des Konfigurationspakets, die die NetScaler-Instanz empfängt.
Hinweise:
- Der Satz von Instanzrollen in einem StyleBook wird während der Erstellung des StyleBooks definiert.
- Die Rollen werden einer bestimmten NetScaler-Instanz beim Erstellen oder Aktualisieren des Konfigurationspakets zugewiesen.
Abschnitt „target-roles“
Ein neuer Abschnitt in einem StyleBook namens „target-roles“ wird eingeführt, in dem alle vom StyleBook unterstützten Rollen deklariert werden.
Dieser Abschnitt wird typischerweise nach dem Abschnitt „import-StyleBooks“ eines StyleBooks und vor dem Abschnitt „parameters“ platziert.
Im folgenden StyleBook-Beispiel werden zwei Rollen im Abschnitt „target-roles“ definiert – A und B.
target-roles:
-
name: A
name: B
min-targets: 2
max-targets: 5
<!--NeedCopy-->
Sie können sehen, dass Rolle B auch zwei optionale Untereigenschaften definiert, min-targets und max-targets.
Obwohl diese beiden Untereigenschaften optional sind, geben min-targets die minimale obligatorische Anzahl von NetScaler-Instanzen an, denen diese Rolle beim Erstellen eines Konfigurationspakets aus diesem StyleBook zugewiesen werden sollte, und max-targets geben die maximale Anzahl von NetScaler-Instanzen an, denen diese Rolle beim Erstellen eines Konfigurationspakets aus diesem StyleBook zugewiesen werden kann.
Wenn diese Untereigenschaften nicht angegeben sind, gibt es keine Begrenzung für die Anzahl der NetScaler-Instanzen, die für diese Rolle konfiguriert werden können. Wenn min-targets = 0 ist, ist die mit dieser Rolle verbundene Konfiguration optional, und wenn min-targets = 1 ist, dann ist diese Konfiguration obligatorisch und mindestens eine NetScaler-Instanz muss für diese Rolle konfiguriert werden.
Rolle „default“
Zusätzlich zu explizit definierten Rollen gibt es eine implizite Rolle, die alle StyleBooks haben, und diese Rolle wird als Standardrolle bezeichnet. Diese Rolle kann wie jede andere Rolle in einem StyleBook verwendet werden. Beim Erstellen eines Konfigurationspakets, wenn einer NetScaler-Instanz keine spezifische Rolle zugewiesen ist, wird die Instanz implizit der Rolle „default“ zugewiesen. Die Instanz empfängt nun alle Konfigurationsobjekte, die von Komponenten generiert werden, die die Rolle „default“ haben.
Komponenten mit Rollen
Nachdem die Rollen, die ein StyleBook unterstützen kann (einschließlich der Rolle „default“), definiert sind, können die Rollen im Komponentenabschnitt eines StyleBooks verwendet werden. Wenn Sie möchten, dass eine Komponente nur auf NetScaler-Instanzen bereitgestellt wird, die eine bestimmte Rolle spielen, dann können Sie das Attribut „roles“ als Teil der Komponente angeben, wie im folgenden Beispiel einer Komponente dargestellt:
-
name: C1
type: ns::lbvserver
roles:
- A
properties:
name: lb1
servicetype: HTTP
ipv46: 1.1.1.1
port: 80
<!--NeedCopy-->
Im obigen Beispiel generiert die Komponente einen „lbvserver“, der auf Instanzen bereitgestellt wird, die die Rolle A spielen. Beachten Sie, dass das Attribut „roles“ einer Komponente eine Liste ist und einer Komponente mehrere Rollen zugewiesen werden können. Diese Rollen wären im Abschnitt „target-roles“ des StyleBooks deklariert worden.
Hinweis: Wenn eine Komponente in einem StyleBook kein Rollenattribut angibt, werden die von der Komponente generierten Konfigurationsobjekte auf allen NetScaler-Instanzen erstellt, unabhängig von ihrer Rolle. Sie können diese Funktion effektiv nutzen, um Konfigurationsobjekte zu erstellen, die auf alle Instanzen eines Konfigurationspakets angewendet werden können.
Nehmen wir an, es gibt ein StyleBook mit zwei definierten Rollen – A und B – und das vier Komponenten enthält.
- Komponente C1 hat die Rollen A und B
- Komponente C2 hat die Rolle B
- Komponente C3 hat keine Rollen definiert
- Komponente C4 hat die Rolle „default“
Der Komponentenabschnitt dieses StyleBooks ist unten wiedergegeben:
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-->
Beachten Sie, dass die Komponente C3 keine Rolle definiert hat, was bedeutet, dass die Komponente auf allen Instanzen bereitgestellt wird, unabhängig von ihrer Rolle. Andererseits hat Komponente C4 die Rolle „default“, was bedeutet, dass sie auf jede Instanz angewendet wird, der keine explizite Rolle zugewiesen ist.
Stellen Sie sich nun vor, Sie möchten ein Konfigurationspaket mit diesem StyleBook erstellen und es auf fünf NetScaler-Instanzen bereitstellen. In diesem Stadium können Sie den Instanzen die Rollen wie folgt zuweisen:
- Rolle A wird den Instanzen T1, T2, T3 und T4 zugewiesen
- Rolle B wird den Instanzen T2, T3 und T4 zugewiesen
- Instanz T5 ist keine Rolle zugewiesen
Die folgende Abbildung fasst die Rollenzuweisungen zusammen und zeigt die resultierende Konfiguration, die jede NetScaler-Instanz erhalten wird:

Beachten Sie, dass Komponente C3 auf allen Instanzen bereitgestellt wird, unabhängig von der Rolle, da diese Komponente kein Rollenattribut hatte.
Sie können auch die Funktion „Dry Run“ verwenden, wenn Sie ein Konfigurationspaket erstellen, um die korrekte Zuweisung von Rollen und die Konfigurationsobjekte, die auf jeder NetScaler-Instanz erstellt werden, anzuzeigen und zu überprüfen.
Erstellen Sie Ihr StyleBook
Der vollständige Inhalt des StyleBooks „demo-target-roles“ wird unten bereitgestellt:
---
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-->
Die folgende Abbildung zeigt die für ein Beispiel-Konfigurationspaket erstellten Objekte:

Verwenden von APIs
Bei Verwendung der REST-API können Sie Rollen für jede NetScaler-Instanz beim Erstellen oder Aktualisieren des Konfigurationspakets wie folgt angeben. Geben Sie im Block „targets“ die UUID der spezifischen NetScaler-Instanz an, auf der Sie die einzelnen Komponenten bereitstellen möchten.
"targets": [
{
"id": "<ADC-UUID>",
"roles": ["A"]
},
]
<!--NeedCopy-->
Eine vollständige Beispiel-REST-API wird zu Ihrer Referenz bereitgestellt.
POST /`<Console-IP`>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/1.2/demo-target-roles/configpacks
<!--NeedCopy-->
{ “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-->