StyleBook-Konfiguration

Instanzrollen

StyleBooks unterstützt die folgenden Konfigurationen auf NetScaler-Instanzen:

  • Symmetrische Konfiguration - Wenn ein Konfigurationspaket auf mehrere NetScaler-Instanzen angewendet wird und die auf allen Instanzen bereitgestellten Konfigurationen identisch sind.
  • Asymmetrische Konfiguration - Wenn ein Konfigurationspaket auf mehrere NetScaler-Instanzen angewendet wird und die auf allen Instanzen bereitgestellten Konfigurationen unterschiedlich sind. Beispielsweise muss im standardmäßigen Microsoft Skype for Business StyleBook auf jeder NetScaler-Instanz eine andere Konfiguration bereitgestellt werden.

Die Funktion “Instanzrollen” von StyleBooks hilft Ihnen, eine asymmetrische Konfiguration zu erstellen. Hier kann jeder NetScaler-Instanz im Konfigurationspaket eine andere Rolle zugewiesen werden. Die Rolle bestimmt die Konfigurationsobjekte des Konfigurationspakets, das die NetScaler-Instanz erhält.

Zu beachtende Punkte:

  • Die Gruppe der Instanzrollen in einem StyleBook werden beim Erstellen des StyleBook definiert.
  • Die Rollen werden einer bestimmten NetScaler-Instanz zugewiesen, wenn das Konfigurationspaket erstellt oder aktualisiert wird.

Abschnitt Zielrollen

Die “target-roles” werden in einem StyleBook normalerweise nach dem Abschnitt “import-StyleBooks” und vor dem Abschnitt “parameters” platziert. Alle vom StyleBook unterstützten Rollen sind im Abschnitt “target-roles” deklariert.

Im folgenden StyleBook-Beispiel werden im Abschnitt “target-roles” zwei Rollen 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.

min-targets Geben Sie die obligatorische Mindestanzahl von NetScaler-Instanzen an, um diese Rolle zuzuweisen, wenn Sie ein Konfigurationspaket aus diesem StyleBook erstellen. max-targetsGeben Sie die maximale Anzahl von NetScaler-Instanzen an, denen diese Rolle zugewiesen werden kann, wenn Sie ein Konfigurationspaket aus diesem StyleBook erstellen.

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. Für Min-Targets = 0 ist die der Rolle zugeordnete Konfiguration optional. Für min-targets = 1 ist die Konfiguration obligatorisch und mindestens eine NetScaler-Instanz muss für die Rolle konfiguriert werden.

Rolle “Standard”

Zusätzlich zu den explizit definierten Rollen gibt es eine implizite Rolle, die alle StyleBooks haben. Diese implizite Rolle wird als Standardrolle bezeichnet und wird wie jede andere Rolle in einem StyleBook verwendet. Wenn beim Erstellen eines Konfigurationspakets einer NetScaler-Instanz keine bestimmte Rolle zugewiesen ist, wird die Instanz implizit der „Standard“ -Rolle zugewiesen. Die Instanz erhält dann alle Konfigurationsobjekte, die von Komponenten generiert wurden, die die “Standard”-Rolle haben.

Komponenten mit Rollen

Nachdem die Rollen definiert wurden, die ein StyleBook unterstützen kann (einschließlich der Rolle “default”), können die Rollen im Komponentenbereich eines StyleBooks verwendet werden. Wenn Sie möchten, dass eine Komponente nur auf NetScaler-Instanzen bereitgestellt wird, die eine bestimmte Rolle spielen, können Sie das Rollenattribut 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-->

In diesem Beispiel generiert die Komponente lbvserver und wird auf Instanzen bereitgestellt, die die Rolle A spielen. Das Rollenattribut einer Komponente ist list und der Komponente können mehrere Rollen zugewiesen werden. Diese Rollen wären im Abschnitt target-roles des StyleBook deklariert worden.

Hinweis

Wenn eine Komponente in einem StyleBook kein Rollenattribut angibt, werden die von der Komponente generierten Konfigurationsobjekte unabhängig von den Rollen auf allen NetScaler-Instanzen erstellt. Sie können diese Funktion effektiv verwenden, um Konfigurationsobjekte zu erstellen, die auf alle Instanzen eines Konfigurationspakets angewendet werden können.

Stellen Sie sich ein StyleBook mit zwei Rollen und vier Komponenten vor.

  • Komponente C1 hat die Rollen A und B.
  • Komponente C2 hat die Rolle B
  • In Komponente C3 sind keine Rollen definiert
  • Komponente C4 hat die Rolle “default”

Der Komponentenbereich dieses StyleBook lautet wie folgt:

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

Für die Komponente C3 ist keine Rolle definiert, was bedeutet, dass die Komponente unabhängig von ihrer Rolle auf allen Instanzen bereitgestellt wird. Auf der anderen Seite hat die Komponente C4 die Rolle Standard, was bedeutet, dass sie auf jede Instanz angewendet wird, der keine explizite Rolle zugewiesen ist.

Stellen Sie sich nun vor, dass Sie mit diesem StyleBook ein Konfigurationspaket erstellen und es auf fünf NetScaler-Instanzen bereitstellen möchten. Sie können den Instanzen die Rollen auf folgende Weise 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 erhält:

Zusammenfassung der Rollenzuweisungen

Die Komponente C3 wird unabhängig von der Rolle auf allen Instanzen bereitgestellt, da diese Komponente kein roles Attribut hatte.

Verwenden Sie die Funktion “Dry Run”, um Folgendes anzuzeigen und zu überprüfen:

  • Die Zuweisung von Rollen
  • Die auf jeder NetScaler-Instanz erstellten Konfigurationsobjekte

Erstellen Sie Ihr StyleBook

Der vollständige Inhalt des StyleBook “demo-target-roles” lautet wie folgt:

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

Objekte, die in der NetScaler-Instanz für ein Konfigurationspaket erstellt wurden

Verwenden von APIs

Wenn Sie die REST-API verwenden, können Sie beim Erstellen oder Aktualisieren des Konfigurationspakets wie folgt Rollen für jede NetScaler-Instanz angeben. Geben Sie im Block “Ziele” die UUID der spezifischen NetScaler-Instanz an, auf der die einzelnen Komponenten bereitgestellt werden sollen.

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

Eine vollständige REST-API wird als Referenz bereitgestellt.

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