Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Zuordnung von Konfigurationsanweisungen von Junos OS zu JSON

Eine Konfiguration für ein Gerät, auf dem Junos OS ausgeführt wird, wird als Anweisungenhierarchie gespeichert. Die Konfigurationsanweisungshierarchie hat zwei Arten von Anweisungen:

  • Container-Anweisungen – Anweisungen, die andere Anweisungen enthalten

  • Leaf-Anweisungen – Anweisungen, die keine anderen Anweisungen enthalten

Alle Container- und Leaf-Anweisungen bilden zusammen die Konfigurationshierarchie.

Die Konfigurationshierarchie kann zusätzlich zu formatiertem ASCII-Text, Junos XML-Elementen und Konfigurationsmodusbefehlen set mit JavaScript Object Notation (JSON) dargestellt werden. Ab Junos OS Version 14.2 können Sie die Konfiguration eines Geräts mit Junos OS im JSON-Format anzeigen, indem Sie den show configuration | display json Befehl in der CLI ausführen. Darüber hinaus können Sie ab Junos OS Version 16.1 Konfigurationsdaten im JSON-Format auf das Gerät laden.

Hinweis:

Ab Junos OS Version 16.1 geben Geräte, auf denen Junos OS ausgeführt wird, Konfigurationsdaten im JSON-Format mit einer neuen Standardimplementierung für die Serialisierung aus. Sie können den neuen Standard ietfexplizit konfigurieren oder auf den vorherigen Standard zurücksetzen, verboseindem Sie die entsprechende Anweisung auf Hierarchieebene [edit system export-format json] konfigurieren. Sie können die Anweisung konfigurieren, die verbose mit Junos OS Version 16.1R1 beginnt, obwohl die Anweisung erst nach einer späteren Version in der Junos OS CLI offengelegt wird.

Hinweis:

Ab Junos OS Releases 16.1R4, 16.2R2 und 17.1R1 werden ganzzahlige In-Junos OS-Konfigurationsdaten, die im JSON-Format emittiert werden, nicht in Anführungszeichen eingeschlossen. In früheren Versionen werden Ganzzahlen in JSON-Konfigurationsdaten als Zeichenfolgen behandelt und in Anführungszeichen eingeschlossen.

In den folgenden Abschnitten wird die Zuordnung zwischen dem formatierten ASCII-Text und dem Standardformat beschrieben, das für Konfigurationsanweisungen von Junos OS in JSON verwendet wird:

Zuordnung für Hierarchieebenen und Containeranweisungen

Die Konfigurationshierarchie von Junos OS wird in JSON durch ein JSON-Objekt mit einem einzelnen Member der obersten Ebene oder einem Namen/Wert-Paar dargestellt, auf das der Feldname festgelegt "configuration" ist und ein Wert, der ein JSON-Objekt enthält, das die gesamte Konfiguration darstellt. Das configuration Mitglied entspricht der [edit] Hierarchieebene im CLI-Konfigurationsmodus. Die meisten Anweisungen auf den nächsten Ebenen der Konfigurationshierarchie sind Container-Anweisungen.

In JSON ist jede Junos OS-Hierarchieebene oder Container-Anweisung Mitglied des übergeordneten Objekts. Das Element bzw. Name/Wert-Paar hat einen Feldnamen, der dem Namen der Hierarchie oder des Containers entspricht. Sein Wert ist ein JSON-Objekt, das Mitglieder enthält, die die untergeordneten Container und Leaf-Anweisungen auf dieser Hierarchieebene darstellen. Das Objekt kann auch ein Element enthalten, das die Liste der mit dieser Hierarchie verknüpften Attribute enthält.

Das folgende Beispiel zeigt die Zuordnung zwischen formatiertem ASCII-Text und JSON für zwei Anweisungen auf der obersten Ebene der Konfigurationshierarchie:

CLI-Konfigurationsanweisungen

JSON-Syntax

Zuordnung für Objekte, die über eine Kennung verfügen

Auf einigen Hierarchieebenen kann dieselbe Art von Konfigurationsobjekt mehrmals auftreten. Jede Instanz des Objekts verfügt über eine eindeutige Kennung, um es von den anderen Instanzen zu unterscheiden. In der CLI-Notation kann die übergeordnete Anweisung für ein solches Objekt aus einem Schlüsselwort und einer Kennung oder nur einem Identifier bestehen.

keyword ist eine feste Zeichenfolge, die den Objekttyp angibt, der definiert wird, und identifier ein eindeutiger Name für eine Instanz dieses Typs ist. Im folgenden Beispiel user ist ein Schlüsselwort und username der Bezeichner.

In JSON sind alle Instanzen eines Konfigurationsobjekts in einem einzelnen Namen/Wertpaar enthalten, in dem der Feldname im Allgemeinen mit der keyword Zeichenfolge übereinstimmt und der Wert ein Array von JSON-Objekten ist, von denen jede eine Instanz des Konfigurationsobjekts ist. Die JSON-Syntax unterscheidet sich von der CLI in ihrer Behandlung des Identifiers. In JSON verwendet jede Instanz des Konfigurationsobjekts ein Name/Wert-Paar für den Bezeichner, wobei der Feldname diese Daten als Bezeichner unterscheidet und der Wert die tatsächliche eindeutige Kennung für das Objekt ist. Am häufigsten lautet der Feldname nur name. Einige Objekte verfügen über mehrere Identifikatoren und verwenden möglicherweise einen anderen Feldnamen als name. JSON-Daten, die einen Identifikator angeben, werden immer zuerst innerhalb des entsprechenden Objekts aufgeführt, aber nach jeder Attributliste, die für dieses Objekt enthalten ist.

Hinweis:

Junos OS reserviert das Präfix junos- für die Identifikatoren von Konfigurationsgruppen, die innerhalb der junos-defaults Konfigurationsgruppe definiert sind. Benutzerdefinierte Bezeichner können nicht mit der Zeichenfolge junos-beginnen.

Die Konfiguration für die meisten Objekte mit Identifikatoren enthält zusätzliche Leaf-Anweisungen, die andere Merkmale des Objekts darstellen. Beispielsweise verfügt jede auf Hierarchieebene [edit protocols bgp group] konfigurierte BGP-Gruppe über einen zugehörigen Namen (den Identifier) und kann Leaf-Anweisungen für andere Merkmale wie Typ, autonome Peer-System-Nummer (AS) und Nachbaradresse haben. Informationen zum JSON-Mapping für Leaf-Anweisungen finden Sie unter Mapping for Single-Value and Fixed-Form Leaf Statements.

Das folgende Beispiel zeigt die Zuordnung von formatiertem ASCII-Text zu JSON für Konfigurationsanweisungen, die zwei BGP-Gruppen mit dem Namen G1 und G2 definieren. In der JSON-Syntax ist der group Member-Wert ein Array, das für jede BGP-Gruppe ein separates JSON-Objekt enthält.

CLI-Konfigurationsanweisungen

JSON-Syntax

Zuordnung für Einzelwert- und Festform-Leaf-Anweisungen

Eine Leaf-Anweisung ist eine CLI-Konfigurationsanweisung, die keine anderen Anweisungen enthält. Die meisten Leaf-Anweisungen definieren einen Wert für ein Merkmal eines Konfigurationsobjekts und haben folgende Form:

Leaf-Anweisungen von Junos OS werden den Name-/Wertpaaren in JSON zugeordnet. Im Allgemeinen ist der Feldname der gleiche wie die keyword Zeichenfolge, und der Wert ist der gleiche wie die value Zeichenfolge.

Das folgende Beispiel zeigt die JSON-Zuordnung für zwei Leaf-Anweisungen mit einem Schlüsselwort und einem Wert: die message Anweisung auf Hierarchieebene [edit system login] und die preference Anweisung auf Hierarchieebene  [edit protocols ospf] .

CLI-Konfigurationsanweisungen

JSON-Syntax

Einige Leaf-Anweisungen bestehen nur aus einem Schlüsselwort mit fester Form, ohne einen zugehörigen variablen Formwert. Junos OS stellt solche Anweisungen in JSON dar, indem es den Wert im Name/Wert-Paar auf [null]. Im folgenden Beispiel wird die JSON-Zuordnung für die disable Anweisung auf Hierarchieebene [edit forwarding-options sampling] dargestellt.

CLI-Konfigurationsanweisungen

JSON-Syntax

Zuordnung für Leaf-Anweisungen mit mehreren Werten

Einige Junos OS Leaf-Anweisungen akzeptieren mehrere Werte, die entweder benutzerdefinierte oder aus einer Reihe vordefinierter Werte gezogen werden können. Die CLI-Notation verwendet eckige Klammern, um alle Werte in einer einzigen Anweisung zu umschließen, wie im folgenden Beispiel:

Wie in Mapping for Single-Value and Fixed-Form Leaf Statements erläutert, werden Leaf-Anweisungen in JSON namen-/wertepaaren zugeordnet, wobei der Feldname mit der keyword Zeichenfolge identisch ist. Zur Darstellung mehrerer Werte verwendet der Wertteil der JSON-Daten ein Array aus kommagetrennten Zeichenfolgen.

Das folgende Beispiel zeigt die JSON-Zuordnung für eine CLI-Anweisung mit mehreren benutzerdefinierten Werten. Die import Anweisung importiert zwei Routing-Richtlinien, die an anderer Stelle in der Konfiguration definiert sind. Der formatierte ASCII-Text verwendet eine platzsparende Werteliste, während die JSON-Daten ein Array mit einer kommagetrennten Liste von Zeichenfolgen verwenden.

CLI-Konfigurationsanweisungen

JSON-Syntax

Das folgende Beispiel zeigt die JSON-Zuordnung für eine CLI-Anweisung mit mehreren vordefinierten Werten. Die permissions Anweisung gewährt mitgliedern der user-accounts Anmeldeklasse drei vordefinierte Berechtigungen.

CLI-Konfigurationsanweisungen

JSON-Syntax

Zuordnung für mehrere Optionen in einer oder mehreren Zeilen

Bei einigen Junos OS-Konfigurationsobjekten werden mit der Standard-CLI-Syntax mehrere Optionen in einer einzigen Zeile platziert, was in der Regel eine bessere Lesbarkeit und Prägnanenz bietet. In den meisten solchen Fällen identifiziert die erste Option das Objekt und hat kein Schlüsselwort, aber spätere Optionen sind gekoppelte Keywords und Werte.

In JSON ordnet dasselbe Konfigurationsobjekt einem Namen/Wert-Paar zu. Der Feldname ist der gleiche wie der Objektname, und der Wert ist ein JSON-Objekt, das die Optionen enthält, die durch Namen-/Wertpaare dargestellt werden. Wenn die erste Option in der CLI-Anweisung kein Schlüsselwort hat, weist die JSON-Zuordnung einen Namen zu, der dem im Schema definierten und für den entsprechenden Junos XML-Tagnamen verwendeten Optionsnamen entspricht.

Das folgende Beispiel zeigt die JSON-Zuordnung für eine CLI-Konfigurationsanweisung mit mehreren Optionen in einer einzigen Zeile. Die JSON-Darstellung der [edit system backup-router] Anweisung verwendet Name/Wert-Paare für beide Optionen und weist den Feldnamen address für die erste Option (10.0.0.1) zu, die kein CLI-Schlüsselwort hat.

CLI-Konfigurationsanweisungen

JSON-Syntax

Die Syntax für einige Konfigurationsobjekte umfasst mehr als eine Zeile mit mehreren Optionen. In JSON ordnet das Konfigurationsobjekt wie im vorherigen Fall einem Namen/Wert-Paar zu. Der Feldname ist der gleiche wie der Objektname, und der Wert ist ein JSON-Objekt, das die Optionen enthält, die durch Namen-/Wertpaare dargestellt werden. Für jede Option entspricht der Feldname dem Optionsnamen, und der Wert ist eine JSON-Datenstruktur, die die Konfigurationsdaten für diese Option entsprechend darstellt. Wenn eine Option dasselbe Schlüsselwort verwendet, sich aber über mehrere Zeilen erstreckt, kombiniert die JSON-Darstellung die Optionen in einem einzigen Namen/Wertpaar. In diesem Fall ist der Wert ein Array von JSON-Objekten, in denen jede Option einem separaten Objekt zugeordnet wird.

Im folgenden Beispiel wird die JSON-Zuordnung für die traceoptions Anweisung auf Hierarchieebene [edit protocols isis] dargestellt. Die traceoptions Anweisung verfügt über drei untergeordnete Anweisungen, die jeweils mehrere Optionen haben. Die CLI-Notation zeigt die einzelnen flag Optionen in separaten Zeilen an, aber die JSON-Darstellung kombiniert die flag Details zu einem einzelnen Namen/Wertpaar. Der Wert ist ein Array von Objekten, bei denen jedes Objekt die Details für ein Flag enthält.

CLI-Konfigurationsanweisungen

JSON-Syntax

Zuordnung für Attribute

Die Junos OS-Konfigurationshierarchie kann Tags enthalten, die eine Hierarchie oder Anweisung ändern. Wenn Sie beispielsweise den deactivate Befehl zur Deaktivierung einer Anweisung in der Konfiguration ausstellen, wird das inactive: Tag zum Element in der Konfiguration vorinstalliert, um diese Eigenschaft anzuzeigen. Die Junos XML-API stellt diese Eigenschaft als Attribut im öffnenden Tag des XML-Elements dar.

Die JSON-Darstellung der Junos OS-Konfiguration verwendet Metadatenanmerkungen, um diese Eigenschaften darzustellen. Die Metadatenanmerkungen sind als Mitglieder eines einzelnen JSON-Objekts codiert und enthalten das "@"-Symbol als oder innerhalb des Namens.

Das Metadatenobjekt, das die Attributliste für eine Container-Anweisung darstellt, wird als neues Mitglied dieses Objekts hinzugefügt. Das Metadatenobjekt wird direkt in das Containerobjekt platziert, das es ändert, und verwendet ein einzelnes "@"-Symbol als Membernamen. Das Metadatenobjekt, das die Attributliste für eine Leaf-Anweisung darstellt, wird als Geschwistername/Wertpaar hinzugefügt, das direkt nach der von der Anweisung geänderten Anweisung platziert wird und über einen Membernamen verfügt, der die Verkettung des "@"-Symbols und des Anweisungsnamens darstellt. Der Metadatenobjektwert ist in beiden Fällen ein Objekt, das Namens-/Wertepaare enthält, die jedes der Attribute beschreiben, die mit dieser Container- oder Leaf-Anweisung verknüpft sind.

In den folgenden Beispielen wurden sowohl die [edit commit] Hierarchie als auch die persist-groups-inheritance Aussage deaktiviert. In der CLI werden die Anweisungen dem inactive: Tag vorangestellt. Die Junos XML-Darstellung enthält das inactive="inactive" Attribut in jedem der öffnenden Tags für diese Elemente. Die JSON-Zuordnung speichert die Attribute in einer Attributliste. Die Attributliste für die [edit commit] Hierarchie wird mit "@" angegeben, da es sich um eine Container-Anweisung handelt. Die Attributliste für die persist-groups-inheritance Anweisung wird mit "@persist-groups-vererbung" angegeben, da es sich um eine Leaf-Anweisung handelt.

CLI-Konfigurationsanweisungen

XML-Syntax

JSON-Syntax

Die Attributliste für eine bestimmte Instanz eines Objekts ähnelt der Attributliste für einen Container, da es sich um ein Name-Wert-Paar handelt, bei dem der Feldname ein einzelnes "@"-Symbol ist und der Wert ein Objekt ist, das Name-/Wertpaare enthält, die jedes der Attribute beschreiben. Die Attributliste wird innerhalb des JSON-Objekts eingeschlossen, das diese Instanz identifiziert, und ist das erste Element im Objekt, gefolgt von der Kennung für das Objekt.

Im folgenden Beispiel ist die Ge-0/0/0-Schnittstelle geschützt. In der CLI wird dem Objekt das protect: Tag vorangestellt. Die Junos XML-Darstellung enthält das protect="protect" Attribut im öffnenden Tag für dieses Objekt. Die JSON-Zuordnung speichert das "protect" : true Attribut in einer Attributliste, die im JSON-Objekt enthalten ist und diese spezifische Schnittstelle identifiziert.

CLI-Konfigurationsanweisungen

XML-Syntax

JSON-Syntax

Zuordnung für Konfigurationskommentare

Eine Junos OS-Konfiguration kann Kommentare enthalten, die Anweisungen in der Konfiguration beschreiben. Konfigurationsdaten, die mit ASCII-Text oder Junos XML-Elementen formatiert werden, zeigen Kommentare in der Zeile vor der Anweisung an, die der Kommentar ändert. Im Junos XML-Format wird die Kommentarzeichenfolge in einem <junos:comment> Element eingeschlossen.

Kommentare werden mithilfe eines von zwei Trennzeichen angezeigt: die paarigen Zeichenfolgen /* und */ das Umschließen des Kommentars oder des Zeichens, das # dem Kommentar vorangeht. Sie können entweder ein Trennzeichen in der Kommentarzeichenfolge verwenden, wenn Sie Kommentare in die Konfiguration einfügen. Wenn Sie das Trennzeichen weglassen, fügt /* Junos OS automatisch ein und */.

Hinweis:

Junos OS behält jeden im Kommentar enthaltenen Leerraum bei.

Konfigurationsdaten von Junos OS, die mit JSON formatiert werden, ordnet einen Kommentar einem Namen/Wertpaar zu, das als Attribut der von diesem geänderten Anweisung gespeichert wird. Der Feldname ist auf "comment"festgelegt, und der Wert ist die Kommentartextzeichenfolge. Die Kommentartextzeichenfolge kann eines der beiden Trennzeichen enthalten, die einen Kommentar angeben. Wenn Sie beim Laden der JSON-Konfigurationsdaten das Trennzeichen aus der Kommentartextzeichenfolge weglassen, fügt Junos OS dem Kommentar automatisch die /* Trennzeichen hinzu */ . Sie können auch Mehrlinienkommentare in JSON-Konfigurationsdaten erstellen, indem Sie das Newline-Zeichen (\n) in die Kommentarzeichenfolge einfügen.

Das folgende Beispiel zeigt die formatierte ASCII-Konfiguration und die entsprechende JSON-Syntax für drei Kommentare. Das Beispiel verknüpft einen Kommentar mit einer Hierarchie, einen anderen Kommentar mit einem Objekt, das eine Kennung hat, und einen dritten Kommentar mit einer Leaf-Anweisung.

CLI-Konfigurationsanweisungen

JSON-Syntax

Versionsverlaufstabelle
Release
Beschreibung
16.1R4
Ab Junos OS Releases 16.1R4, 16.2R2 und 17.1R1 werden ganzzahlige In-Junos OS-Konfigurationsdaten, die im JSON-Format emittiert werden, nicht in Anführungszeichen eingeschlossen. In früheren Versionen werden Ganzzahlen in JSON-Konfigurationsdaten als Zeichenfolgen behandelt und in Anführungszeichen eingeschlossen.
16.1
Ab Junos OS Version 16.1 geben Geräte, auf denen Junos OS ausgeführt wird, Konfigurationsdaten im JSON-Format mit einer neuen Standardimplementierung für die Serialisierung aus.