StyleBook-Konfiguration

Ausdrücke

Eine der mächtigsten Funktionen eines StyleBook ist die Verwendung von Ausdrücken. Sie können StyleBooks-Ausdrücke in verschiedenen Szenarien verwenden, um dynamische Werte zu berechnen. Das folgende Beispiel ist ein Ausdruck zum Verketten eines Parameterwerts mit einer Literalzeichenfolge.

Beispiel:

$parameters.appname + "-mon"

Dieser Ausdruck ruft den Parameter mit dem Namen appname ab und verkettet ihn mit der Zeichenfolge -mon.

Hinweis

StyleBook unterstützt die Verwendung reservierter Schlüsselwörter, wenn Sie Parameter und Ausdrücke in einer StyleBook-Definition definieren. Die reservierten Schlüsselwörter sind - andfalsein, not, true, und or.

Die folgenden Ausdruckstypen werden unterstützt:

Arithmetische Ausdrücke

  • Zusatz (+)
  • Subtraktion (-)
  • Multiplikation (*)
  • Abteilung (/)
  • Modul (%)

Beispiele:

  • Zwei Zahlen hinzufügen: $parameters.a + $parameters.b
  • Zwei Zahlen multiplizieren: $parameters.a * 10
  • Finden des Restes nach Division einer Zahl durch eine andere:

15%10 Ergebnisse in 5

String-Ausdrücke

  • Verketten Sie zwei Strings (+)

Beispiel:

Verketten Sie zwei Strings: str (“app-“) + $parameters.appname

Ausdrücke auflisten

Führt zwei Listen zusammen (+)

Beispiel:

  • Verketten Sie zwei Listen: $parameters.external-servers + $parameters.internal-servers

  • Wenn $parameters.ports-1 [80, 81] und $parameters.port-2 [81, 82] ist, wird $parameters.ports-1 + $parameters.ports-2 als Liste [80, 81, 81, 82] angezeigt.

Relationale Ausdrücke

  • ==: Testet, ob zwei Operanden gleich sind und gibt true zurück, wenn sie gleich sind, andernfalls wird false zurückgegeben.

  • ! =: Testet, ob zwei Operanden unterschiedlich sind und gibt true zurück, wenn sie unterschiedlich sind, andernfalls wird false zurückgegeben.

  • ** : Gibt true zurück, wenn der erste Operand größer als der zweite Operand ist, andernfalls wird false zurückgegeben.

  • >= : Gibt true zurück, wenn der erste Operand größer oder gleich dem zweiten Operanden ist, andernfalls wird false zurückgegeben.

  • < : Gibt true zurück, wenn der erste Operand kleiner als der zweite Operand ist, andernfalls wird false zurückgegeben.

  • <= : Gibt true zurück, wenn der erste Operand kleiner oder gleich dem zweiten Operanden ist, andernfalls wird false zurückgegeben.

Beispiel:

  • Verwendung des Gleichstellungs-Operators: $parameters.name = = "abcd"
  • Verwendung des Inequality Operators: $parameters.name != "default"
  • Beispiele für andere relationale Operatoren

    • 10 > 9
    • 10 >= 10
    • 0 < 9
    • 10 <= 9
    • 10 == 10
    • 10 != 1

Logische Ausdrücke - boolescher Wert

  • und: Der logische ‘und’-Operator. Wenn beide Operanden wahr sind, ist das Ergebnis wahr, andernfalls ist es falsch.

  • oder: Der logische “oder” -Operator. Wenn einer der Operanden wahr ist, ist das Ergebnis wahr, andernfalls ist es falsch.

  • nicht: Der unäre Operator. Wenn der Operand wahr ist, ist das Ergebnis falsch und umgekehrt.

  • in: Testet, ob das erste Argument eine Teilzeichenfolge des zweiten Arguments ist

  • in: Prüft, ob ein Element Teil einer Liste ist

Hinweis

Sie können Ausdrücke typisieren, bei denen Strings in Zahlen umgewandelt werden (mit der integrierten () integrierten Funktion) und Zahlen in Strings konvertiert werden (mit der eingebauten Funktion str ()). In ähnlicher Weise können Sie tcp-port in eine Zahl umwandeln (mit der eingebauten Funktion int()), und eine IP-Adresse kann in eine Zeichenfolge umgewandelt werden (mit der integrierten Funktion str()).

Verwenden Sie ein Trennzeichen vor und nach einem Operator. Sie können die folgenden Trennzeichen verwenden:

  • Vor einem Operator: spacetab, comma, (, ), [, ]

  • Nach einem Operator: space, tab, (, [

Beispiel:

  • abc + def

  • 100 % 10

  • 10 > 9

  • $item in $parameters.some-list

Splat-Ausdrücke

Ein Splat-Ausdruck [*] bietet eine einfachere Möglichkeit, ein bestimmtes Attribut aus einer komplexen Liste für alle Iterationen abzurufen. Sie können jetzt Splat-Ausdrücke in eine StyleBook-Definition aufnehmen.

Syntax:

  list[*].attribute
<!--NeedCopy-->

Dieser Ausdruck wiederholt über alle Elemente der links angegebenen Liste und gibt den rechts angegebenen Attributwert zurück.

Wenn Sie eine IP-Adresse oder einen Hostnamen jedes virtuellen Servers aus der Liste abrufen möchten, können Sie die folgenden Splat-Ausdrücke verwenden:

Beispiel 1:

$parameters.server-members[*].hostname
<!--NeedCopy-->

Dieser Ausdruck gibt eine Liste von Hostnamen aller Servermitglieder zurück.

Beispiel 2:

$parameters.server-members[*].sub-domains[*].name
<!--NeedCopy-->

Dieser Ausdruck gibt eine Liste aller Namen unter den Subdomänen der einzelnen Servermitglieder zurück.

Diese Ausdrücke geben immer die Liste des Elementtyps ganz rechts zurück.

Wörtliche Zeichenfolgenausdrücke

Sie können wörtliche Zeichenfolgen verwenden, wenn Sonderzeichen in einer Zeichenfolge ihre literale Form annehmen müssen. Diese Zeichenfolgen können Escape-Zeichen, umgekehrte Schrägstriche, Anführungszeichen, Klammern, Leerzeichen, Klammern usw. enthalten. In wörtlichen Zeichenketten wird die übliche Interpretation der Sonderzeichen übersprungen. Alle Zeichen in der Zeichenfolge bleiben in ihrer wörtlichen Form erhalten.

In StyleBooks können Sie NetScaler Richtlinienausdrücke in ihre literale Form mithilfe von wörtlichen Zeichenfolgen einschließen. Die Richtlinienausdrücke enthalten in der Regel Sonderzeichen. Ohne wörtliche Zeichenfolgen müssen Sie Sonderzeichen umgehen, indem Sie Strings in Teilstrings zerlegen.

Um eine wörtliche Zeichenfolge zu erstellen, kapseln Sie eine Zeichenfolge wie folgt zwischen Sonderzeichen:

~{string}~
<!--NeedCopy-->

Sie können wörtliche Strings in den StyleBook-Ausdrücken verwenden.

Hinweis

Verwenden Sie nicht die Zeichenfolge }~ in einer Eingabezeichenfolge, da diese Sequenz das Ende einer wörtlichen Zeichenfolge angibt.

Beispiel:

 ~{HTTP.REQ.COOKIE.VALUE("jsessionid") ALT HTTP.REQ.URL.BEFORE_STR("=").AFTER_STR(";jsessionid=") ALT HTTP.REQ.URL.AFTER_STR(";jsessionid=")}~
<!--NeedCopy-->

Weitere Informationen finden Sie unter Sonderzeichen mit ihrer wörtlichen Form in StyleBooks zulassen.

Target-Ausdrücke

In einer StyleBook-Definition können Sie den Ausdruck verwenden, um auf $current-targetdie aktuelle NetScaler-Zielinstanz zu verweisen. Um speziell auf eine IP-Adresse der NetScaler-Zielinstanz zu verweisen, verwenden Sie diesen Ausdruck wie folgt:

$current-target.ip
<!--NeedCopy-->

Beispiel:

components:
 -
  name: lb-comp
  type: ns::lbvserver
  properties:
    name: $current-target.ip + "-lbvserver"
<!--NeedCopy-->

In diesem Beispiel verwendet der Name von die lbvserverIP-Adresse der NetScaler-Zielinstanz.

Ausdruckstypvalidierung

Die StyleBook-Engine ermöglicht jetzt eine stärkere Typprüfung während der Kompilierungszeit, dh die beim Schreiben des StyleBook verwendeten Ausdrücke werden beim Import eines StyleBook selbst validiert, anstatt das Konfigurationspaket zu erstellen.

Alle Verweise auf Parameter, Substitutionen, Komponenten, Eigenschaften von Komponenten, Ausgaben von Komponenten, benutzerdefinierte Variablen (Repeat-Item, Repeat-Index, Argumente auf Substitutionsfunktionen) usw. werden auf ihre Existenz und Typen validiert.

Beispiel für Typprüfungen:

Im folgenden Beispiel lautet der erwartete Typ der Port-Eigenschaft von lbvserver StyleBook tcp-port. In NetScaler Console finden die Typüberprüfungen zur Kompilierzeit (Importzeit) statt. Der Compiler findet diese Zeichenfolge und tcp-port es handelt sich nicht um kompatible Typen. Daher zeigt der StyleBook-Compiler einen Fehler an und kann ein StyleBook nicht importieren oder migrieren.


components:
  -
    name: lbvserver-comp
    type: ns::lbvserver
    properties:
      name: mylb
      ipv46: 10.102.190.15
      port: str("80")
      servicetype: HTTP
<!--NeedCopy-->

Um dieses StyleBook erfolgreich zu kompilieren, deklarieren Sie Folgendes als Zahl im Compiler:

port: 80

Beispiel für das Markieren ungültiger Ausdrücke:

Wenn Sie ein StyleBook in NetScaler Console importieren, identifiziert der Compiler die ungültigen Ausdrücke und kennzeichnet sie. Daher kann das StyleBook nicht in die NetScaler Console importiert werden.

Im folgenden Beispiel ist der zugewiesene Ausdruck für die Eigenschaft “name” in der Komponente lb-sg-binding-comp: $components.lbvserver-comp.properties.lbvservername. Es gibt jedoch keine Eigenschaft, die lbvservernamein der Komponente aufgerufen wird lbvserver-comp.

Components:
  -
    name: lbvserver-comp
    type: ns::lbvserver
    properties:
      name: mylb
      ipv46: 10.102.190.15
      port: 80
      servicetype: HTTP
  -
    name: sg-comp
    type: ns::servicegroup
    properties:
      servicegroupname: mysg
      servicetype: HTTP
  -
    name: lb-sg-binding-comp
    type: ns::lbvserver_servicegroup_binding
    condition: $parameters.create-binding
    properties:
      name: $components.lbvserver-comp.properties.lbvservername
      servicegroupname: $components.sg-comp.properties.servicegroupname
<!--NeedCopy-->

Implizites Typecasting von Datentypen

Wenn Sie StyleBook-Ausdrücke für verschiedene Datentypen verwenden, schreibt die StyleBook-Engine die Ausgabe jetzt implizit in einen entsprechenden Datentyp um. Das implizite Typecasting von Datentypen unterstützt binäre Operationen und Wertzuweisungen.

Beispiele für binäre Operationen:

  • Durch Addieren (+) von zwei Variablen vom Typ string und number wird der Ausgabedatentyp auf string festgelegt.

$parameters.appname + '_' + $parameters.app_instance_num

  • Durch Addieren (+) von zwei Variablen vom Typ string und ipaddress wird der Ausgabedatentyp auf string festgelegt.

$parameters.appname + '_' + $parameters.instance_ip

  • Durch Addieren (+) von zwei Variablen vom Typ ipaddress und number wird der Ausgabedatentyp auf ipaddress festgelegt.

$parameters.instance_ip + $parameters.number

  • Durch Subtrahieren (-) von zwei Variablen vom Typ ipaddress und number wird der Ausgabedatentyp auf ipaddress festgelegt.

$parameters.instance_ip - $parameters.number

  • Durch Multiplizieren (*) zweier Variablen vom Typ string und number wird der Ausgabedatentyp auf string festgelegt.

$parameters.dummy_str * $parameters.count

Beispiele für Wertzuweisungen:

  • Wenn eine Variable als Datentyp string definiert ist, wird der zugewiesene Wert in den definierten Datentyp konvertiert.

name: $parameters.port * 3

  • Wenn eine Variable als Datentyp portnumber definiert ist, wird der zugewiesene Wert mit Ausnahmen in den Datentyp portnumber konvertiert.

port: $index + $parameters.lower_limit

Indizierung von Listen

Auf Elemente einer Liste kann jetzt zugegriffen werden, indem Sie sie direkt indizieren:

   
Ausdruck Beschreibung
$components.test-lbs[0] Bezieht sich auf das erste Element in der thetest-lbs Komponente
$components.test-lbs[0].properties.p1 Bezieht sich auf die Eigenschaft p1 des ersten Elements in der Test-lbs Komponente
$components.lbcomps[0].outputs.servicegroups[1].properties.servicegroupname Bezieht sich auf die Eigenschaft servicegroupname des zweiten Elements in der servicegroups Komponente, bei der es sich um eine Ausgabe des ersten Elements der lbcomps Komponente handelt

Richtlinienausdrücke in StyleBooks

Mit der StyleBooks-GUI können Sie NetScaler-Richtlinienausdrücke erstellen, indem Sie Elemente aus Listen auswählen, sodass Sie Ausdrücke schneller und genauer erstellen können.

Mit Richtlinienausdrücken in StyleBooks können Sie flexible und anpassbare Konfigurationen erstellen. Sie können Bedingungen auf der Grundlage verschiedener Parameter, Attribute oder Variablen angeben. Richtlinienausdrücke werden häufig verwendet, um NetScaler-Richtlinienkonfigurationen zu implementieren.

Aktivieren Sie den Policy Expression Editor in der StyleBooks-GUI

Um den EPA- oder Ausdruckseditor für einen Parameter verfügbar zu machen, geben Sie das GUI-Attribut is_policy_expression in der Parameterdefinition an. Wenn diese Einstellung aktiviert ist (auf true gesetzt), können Sie den Ausdruckseditor aufrufen, wenn Sie einen Wert für diesen Parameter eingeben.

parameters:
  -
    name: expression
    type: string
    label: Expression
    required: true
    gui:
      is_policy_expression: true
<!--NeedCopy-->

Richtlinienausdrücke erstellen und erstellen

  1. Navigieren Sie zu Anwendungen > Konfigurationen > StyleBooks. Auf der StyleBooks-Seite werden alle StyleBooks angezeigt, die in Ihrer NetScaler Console verfügbar sind.

  2. Wählen Sie ein StyleBook aus, dessen Parameter Richtlinienausdrücke enthalten.

  3. Klicken Sie auf Konfiguration erstellen. Geben Sie auf der Seite Konfiguration erstellen Werte für alle in diesem StyleBook definierten Parameter ein.

  4. Klicken Sie auf das Symbol neben dem Feld Ausdrücke. Die Seite Ausdruck erstellen wird angezeigt.

    Konfiguration mit Ausdrücken erstellen

  5. Verwenden Sie in Create an Expression die intuitiven Dropdownmenüs, um Ihren Richtlinienausdruck zu erstellen. Klicken Sie auf Submit.

    Editor für Ausdrücke

    Wenn Sie einen benutzerdefinierten Richtlinienausdruck erstellen möchten, klicken Sie auf EPA-Editor oder Ausdruckseditor, um Ihre Ausdrücke zu erstellen. Überprüfen Sie Ihre Ausdrücke unter Vorschau von Ausdrücken und klicken Sie dann auf Senden.

  6. Wählen Sie die NetScaler-Zielinstanz aus, auf der die Konfiguration bereitgestellt werden soll, und klicken Sie auf Senden.

    Konfigurationspaket mit Ausdrücken

Ausdrücke