Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Beispiel: Erstellen einer benutzerdefinierten Konfigurationssyntax mit Commit-Skript-Makros

Eine Junos OS-Konfiguration kann Anweisungen mit benutzerdefinierter Konfigurationssyntax enthalten apply-macro . Für sich genommen hat die apply-macro Aussage keine betrieblichen Auswirkungen auf das Gerät. Commit-Skript-Makros verarbeiten die benutzerdefinierte Konfigurationssyntax und erweitern sie in Standardkonfigurationsanweisungen von Junos OS, die dann als persistente oder vorübergehende Änderung hinzugefügt werden. In diesem Beispiel wird veranschaulicht, wie Sie Commit-Skript-Makros verwenden, um Anweisungen zu untersuchen apply-macro und Konfigurationsanweisungen für Junos OS zu generieren.

Anforderungen

In diesem Beispiel werden die folgenden Hardware- und Softwarekomponenten verwendet:

  • Gerät mit Junos OS.

  • Junos OS Version 16.1R3 oder höher bei Verwendung eines Python-Skripts.

Überblick und Commit-Skript

Tabelle 1 zeigt ein Makro mit benutzerdefinierter Syntax und der entsprechenden Erweiterung der standardmäßigen Befehlszeilenschnittstelle (CLI) von Junos OS.

Tabelle 1: Beispiel-Makro- und Junos OS CLI-Erweiterung

Benutzerdefinierte Makrosyntax

Erweiterte Junos OS CLI-Syntax

protocols {
    mpls {
        apply-macro blue-type-lsp {
            10.1.1.1;
            10.2.2.2;
            10.3.3.3;
            10.4.4.4;
            color blue;
            group-value 0;
        }
    }
}
protocols {
    mpls {
        admin-groups {
            blue 0;
        }
        label-switched-path blue-lsp-10.1.1.1 {
            to 10.1.1.1;
            admin-group include-any blue;
        }
        label-switched-path blue-lsp-10.2.2.2 {
            to 10.2.2.2;
            admin-group include-any blue;
        }
        label-switched-path blue-lsp-10.3.3.3 {
            to 10.3.3.3;
            admin-group include-any blue;
        }
        label-switched-path blue-lsp-10.4.4.4 {
            to 10.4.4.4;
            admin-group include-any blue;
        }
    }
}

In diesem Beispiel prüft der Junos OS Management(mgd)-Prozess die Konfiguration und sucht apply-macro nach Anweisungen. Für jede apply-macro Anweisung mit dem color auf der [edit protocols mpls] Hierarchieebene enthaltenen Parameter generiert das Skript eine vorübergehende Änderung unter Verwendung der innerhalb der apply-macro Anweisung bereitgestellten Daten, um das Makro in eine standardmäßige administrative Junos OS-Gruppe für LSPs zu erweitern.

Damit dieses Beispiel funktioniert, muss eine apply-macro Anweisung auf Hierarchieebene [edit protocols mpls] mit einer Gruppe von Adressen, einem und einem colorgroup-value Parameter enthalten sein. Das Commit-Skript konvertiert jede Adresse in eine LSP-Konfiguration, und das Skript konvertiert den color Parameter in eine administrative Gruppe.

Nachfolgend finden Sie die Anweisungen zum Commit-Skript, die das Makro in Tabelle 1 erweitern, und eine Zeilen-für-Zeile-Erläuterung des Skripts:

XSLT-Syntax

Die Zeilen 1 bis 8 (und die Zeilen 43 und 44) sind das Kesselplate, das Sie in jedem XSLT-Commit-Skript enthalten. Zur Kürze entfallen hier die Linien 1 bis 8.

Zeile 9 weist der [edit protocols mpls] Variablen namens mpls.

Zeile 10 wählt jede apply-macro Anweisung auf der [edit protocols mpls] Hierarchieebene aus, die den color Parameter enthält. Die Beispielkonfiguration in Tabelle 1 enthält nur eine apply-macro Anweisung. Daher wird diese <xsl:for-each> Programmieranweisung nur ein einziges Mal wirksam.

Zeile 11 weist den Wert des Parameters in diesem color Fall blueeiner Variablen namens color.

Zeile 12 weist den Wert des Parameters in diesem group-value Fall 0einer Variablen namens group-value.

Zeilen 13 bis 15 erzeugen eine transiente Änderung auf Hierarchieebene [edit protocols mpls] .

Die Zeilen 16 bis 23 fügen die admin-groups Anweisung der Konfiguration hinzu und weisen dem Gruppennamen den Wert der color Variablen und den Wert der group-value Variable dem Gruppenwert zu.

Die resultierenden Konfigurationsanweisungen lauten wie folgt:

Zeile 24 wählt den Namen aller Parameter aus, denen kein Wert zugewiesen wurde, bei dem es sich in diesem Fall um die vier IP-Adressen handelt. Diese <xsl:for-each> Programmieranweisung verwendet Rekursion durch das Makro und wählt jede IP-Adresse wiederum aus. Die color und group-value die Parameter haben jeweils einen Wert zugewiesen (blue bzw 0.), so dass diese Zeile nicht für sie gilt.

Zeile 25 fügt die label-switched-path Anweisung in der Konfiguration hinzu.

Die Zeilen 26 bis 28 weisen einen label-switched-path Namen zu, der den Wert der color Variablen, des Textes -lsp und der aktuellen IP-Adresse, die derzeit von Zeile 24 ausgewählt wird (dargestellt durch die " ). .

Zeile 29 fügt die to Anweisung zur Konfiguration hinzu und legt ihren Wert für die IP-Adresse fest, die derzeit von Zeile 24 ausgewählt wird.

Die Zeilen 30 bis 34 fügen die admin-group include-any Anweisung der Konfiguration hinzu und legen ihren Wert auf den Wert der color Variablen fest.

Die resultierenden Konfigurationsanweisungen (für einen Durchlauf) lauten wie folgt:

Die Zeilen 35 bis 42 schließen Tags.

SLAX-Syntax

Das entsprechende SLAX-Skript lautet:

Python-Syntax

Die folgende Python-Syntax erzeugt die identischen Konfigurationsänderungen:

Weitere Informationen zu diesem Beispiel finden Sie unter Beispiel: Konfigurieren von Administrativen Gruppen für LSPs.

Konfiguration

Verfahren

Schritt-für-Schritt-Verfahren

Zum Herunterladen, Aktivieren und Testen des Skripts:

  1. Kopieren Sie das Skript in eine Textdatei, benennen Sie die Datei lsp-admin.xsl, lsp-admin.slax oder lsp-admin.py , und kopieren Sie sie in das /var/db/scripts/commit-Verzeichnis auf dem Gerät.

    Hinweis:

    Nicht signierte Python-Skripte müssen entweder im Besitz eines Root-Benutzers oder eines Benutzers in der Anmeldungsklasse von Junos OS super-user sein, und nur der Dateibesitzer kann über Schreibberechtigungen für die Datei verfügen.

  2. Wenn das Skript in Python geschrieben ist, aktivieren Sie die Ausführung von nicht signierten Python-Skripten.

    Hinweis:

    Konfigurieren Sie die language python3 Anweisung, um Python 3 zur Ausführung von Python-Skripten zu verwenden, oder konfigurieren Sie die language python Anweisung, um Python 2.7 für die Ausführung von Python-Skripten zu verwenden. Weitere Informationen finden Sie unter Sprache.

  3. Wählen Sie die folgenden Testkonfigurationsstanzen aus, und drücken Sie Strg+c, um sie in die Zwischenspeicherung zu kopieren. Wenn Sie die SLAX- oder Python-Version des Skripts verwenden, aktualisieren Sie den Dateinamen auf Hierarchieebene [edit system scripts commit file] .

  4. Geben Sie im Konfigurationsmodus den load merge terminal Befehl aus, um die Stanzas in Ihre Gerätekonfiguration zu integrieren.

    1. Fügen Sie an der Eingabeaufforderung den Inhalt der Zwischenspeicherung mit der Maus und dem Symbol einfügen ein.

    2. Drücken Sie die Enter-Taste.

    3. Drücken Sie Strg+D.

  5. Konfiguration bestätigen.

Überprüfung

Überprüfung der Skriptausführung

Zweck

Vergewissern Sie sich, dass sich das Skript wie erwartet verhält.

Aktion

Um die vom Skript erstellten Konfigurationsanweisungen anzuzeigen, geben Sie den show protocols mpls | display commit-scripts Befehl aus.