Auf dieser Seite
Beispiel: Deaktivieren der Vererbung einer Konfigurationsgruppe
Beispiel: Verwenden von Platzhaltern mit Konfigurationsgruppen
So verbessern Sie die Commit-Zeit bei der Verwendung von Konfigurationsgruppen
Beispiel: Konfigurieren von Anweisungssätzen mit Konfigurationsgruppen
Beispiel: Konfigurieren von Schnittstellen mithilfe von Konfigurationsgruppen
Beispiel: Verwenden von Konfigurationsgruppen zum Konfigurieren von Peer-Entitäten
Beispiel: Verwenden von Konfigurationsgruppen zum Einrichten regionaler Konfigurationen
Beispiel: Konfigurieren von Platzhalterkonfigurationsgruppennamen
Beispiel: Verweisen Sie auf die Preset-Anweisung aus der Gruppe "Defaults"
Beispiel: Anzeigen von Standardanweisungen, die auf die Konfiguration angewendet wurden
Verwenden von Bedingungen zum Anwenden von Konfigurationsgruppen
Beispiel: Konfigurieren von Bedingungen für das Anwenden von Konfigurationsgruppen
Verwenden von Konfigurationsgruppen zur schnellen Konfiguration von Geräten
Verwenden Sie Konfigurationsgruppen, um gemeinsame Elemente einzurichten und anzuwenden, die in derselben Konfiguration wiederverwendet werden.
Übersicht über Konfigurationsgruppen
Dieses Thema bietet eine Übersicht über Konfigurationsgruppen und das Vererbungsmodell in der Junos OS CLI.
Funktionsweise von Konfigurationsgruppen
Konfigurationsgruppen ermöglichen es Ihnen, eine Gruppe zu erstellen, die Konfigurationsanweisungen enthält, und die Vererbung der Anweisungen dieser Gruppe an den Rest der Konfiguration zu steuern. Dieselbe Gruppe kann auf verschiedene Abschnitte der Konfiguration angewendet werden. Verschiedene Abschnitte der Konfigurationsanweisungen einer Gruppe können an verschiedenen Stellen in der Konfiguration geerbt werden.
Mit Konfigurationsgruppen können Sie kleinere, logisch aufgebaute Konfigurationsdateien erstellen, was die Konfiguration und Wartung von Geräten von Juniper Networks erleichtert. So können Sie z.B. Anweisungen, die sich an vielen Stellen in der Konfiguration wiederholen, gruppieren, z.B. bei der Konfiguration von Interfaces. Durch Gruppieren von Anweisungen können Sie Konfigurationsaktualisierungen auf die Gruppe beschränken.
Sie können Platzhalter auch in einer Konfigurationsgruppe verwenden. Jedes Objekt, das mit dem Platzhalterausdruck übereinstimmt, erbt die Gruppenkonfigurationsdaten.
Der Konfigurationsgruppenmechanismus unterscheidet sich von den Gruppierungsmechanismen, die an anderer Stelle in der Konfiguration verwendet werden, z. B. BGP-Gruppen. Konfigurationsgruppen stellen einen generischen Mechanismus bereit, den Sie während der gesamten Konfiguration verwenden können, der jedoch nur der CLI bekannt ist. Die einzelnen Softwareprozesse, die die von der Konfiguration gesteuerten Aktionen ausführen, erhalten die erweiterte Form der Konfiguration; Sie haben keine Kenntnisse über Konfigurationsgruppen.
Vererbungsmodell
Konfigurationsgruppen verwenden echte Vererbung, die eine dynamische, fortlaufende Beziehung zwischen der Quelle der Konfigurationsdaten und dem Ziel dieser Daten beinhaltet. Das Ziel erbt automatisch Datenwerte, die Sie in der Konfigurationsgruppe ändern. Das Ziel muss die geerbten Informationen nicht enthalten. Die geerbten Werte können jedoch im Ziel überschrieben werden, ohne dass sich dies auf die Quelle auswirkt, von der sie geerbt wurden.
Dieses Vererbungsmodell ermöglicht es Ihnen, nur die instanzspezifischen Informationen anzuzeigen, ohne die geerbten Details anzuzeigen. Über eine Command Pipe im Konfigurationsmodus können Sie die geerbten Daten anzeigen.
Konfigurieren von Konfigurationsgruppen
Damit Bereiche Ihrer Konfiguration Konfigurationsanweisungen erben, müssen Sie die Anweisungen zunächst in eine Konfigurationsgruppe einfügen. Anschließend wenden Sie diese Gruppe auf die Ebenen in der Konfigurationshierarchie an, für die die Anweisungen erforderlich sind.
Für Bereiche Ihrer Konfiguration, die Konfigurationsanweisungen erben:
-
Konfigurieren Sie Anweisungen in einer Konfigurationsgruppe. Um Konfigurationsgruppen und Vererbung zu konfigurieren, können Sie die groups-Anweisung auf der Hierarchieebene [edit] einfügen:
[edit] groups {group-name{configuration-data; } } -
Wenden Sie die Konfigurationsgruppe aus Schritt 1 auf die Ebenen in der Konfigurationshierarchie an, für die die Anweisungen erforderlich sind.
Fügen Sie die
apply-groups [ group-names ]Anweisung an einer beliebigen Stelle in die Konfiguration ein, an der die in einer Konfigurationsgruppe enthaltenen Konfigurationsanweisungen benötigt werden.
Erstellen einer Konfigurationsgruppe
Mit der Junos OS CLI können Sie wiederverwendbare Gruppen erstellen, die Konfigurationsanweisungen enthalten. Sie können diese Gruppen auf verschiedene Abschnitte der Konfiguration anwenden, in denen dieselben Konfigurationsanweisungen mehrmals wiederholt werden.
Wenn Sie die Gruppe in verschiedenen Abschnitten der Konfiguration anwenden, erbt dieser Teil der Konfiguration die in der Gruppe konfigurierten Anweisungen. Konfigurationsgruppen folgen der Vererbungsregel, bei der die dynamische, fortlaufende Beziehung zwischen der Quelle der Konfigurationsdaten und dem Ziel dieser Daten festgelegt wird. Wenn Sie die Datenwerte in der Konfigurationsgruppe ändern, spiegelt das übernommene Ziel die Änderungen automatisch wider.
Sie können die Werte in der Zielkonfiguration bei Bedarf überschreiben, was sich nicht auf die Quelle in der Gruppe auswirkt.
Dieses Vererbungsmodell ermöglicht es Ihnen, nur die instanzspezifischen Informationen anzuzeigen, ohne die geerbten Details anzuzeigen. Über eine Command Pipe im Konfigurationsmodus können Sie die geerbten Daten anzeigen. Sie können z. B. alle Schnittstellen ge-0/0/1 für den MTU-Wert 1500 konfigurieren.
So konfigurieren Sie alle Schnittstellen ge-0/0/1 für den MTU-Wert 1500:
-
Erstellen Sie eine Gruppe mit dem MTU-Wert 1500:
[edit groups group-1] lab@vSRX3-05# show interfaces { ge-0/0/1 { unit 0 { family inet { mtu 1500; } } } } -
Als Nächstes wenden Sie die Gruppe in der Schnittstellenkonfiguration an.
[edit interfaces ge-0/0/1] lab@vSRX3-05# set apply-groups group-1
-
Zeigen Sie die übernommene Konfiguration an.
[edit] lab@vSRX3-05# show interfaces ge-0/0/1 | display inheritance unit 0 { family inet { ## ## '1500' was inherited from group 'group-1' ## mtu 1500; address 5.0.0.254/24; } }
Wenn Sie den MTU-Wert für die Schnittstelle ge-0/0/1 in verschiedenen Teilen der Konfiguration konfigurieren möchten, können Sie die group-Anweisung mit der apply-groups Option anwenden. Wenn Sie dies manuell tun und später die MTU erhöhen möchten, müssen Sie möglicherweise jede Schnittstelle manuell ändern. Wenn Sie eine Konfigurationsgruppe verwenden, können Sie die Gruppenkonfiguration ändern und dadurch automatisch alle zugehörigen Schnittstellen aktualisieren.
Sie können auch Platzhalter in einer Konfigurationsgruppe verwenden, damit Konfigurationsdaten von jedem Objekt geerbt werden können, das mit einem Platzhalterausdruck übereinstimmt. Zum Beispiel:
[edit groups group-1]
lab@vSRX3-05# show
interfaces {
ge-* {
unit 0 {
family inet {
mtu 1500;
}
}
}
}Anwenden einer Konfigurationsgruppe
Wenn Sie möchten, dass eine Gerätekonfiguration von Juniper Networks die Anweisungen von einer Konfigurationsgruppe erbt, fügen Sie die apply-groups Anweisung in die Konfiguration ein.
apply-groups [ group-names ];
Wenn Sie mehr als einen Gruppennamen angeben, müssen Sie die Namen in der Reihenfolge ihrer Vererbungspriorität auflisten. Die Konfigurationsdaten in der ersten Gruppe haben Vorrang vor den Daten in den nachfolgenden Gruppen.
Für Geräte, die mehrere Routing-Engines unterstützen, können Sie Namen angeben re0 und re1 gruppieren. Die in group re0 angegebene Konfiguration wird nur angewendet, wenn sich die aktuelle Routing-Engine in Steckplatz 0 befindet. Ebenso wird die in group re1 angegebene Konfiguration nur angewendet, wenn sich die aktuelle Routing-Engine in Steckplatz 1 befindet. Daher können beide Routing-Engines dieselbe Konfigurationsdatei verwenden, wobei jeweils nur die Konfigurationsanweisungen verwendet werden, die für sie gelten. Jede re0 Gruppe re1 enthält mindestens die Konfiguration für den Hostnamen und die Verwaltungsschnittstelle (fxp0). Wenn jede Routing-Engine eine andere Verwaltungsschnittstelle verwendet, sollte die Gruppe auch die Konfiguration für den Backup-Router und die statischen Routen enthalten.
Sie können auf jeder spezifischen Ebene der Konfigurationshierarchie nur eine apply-groups Anweisung einfügen. Die apply-groups Anweisung auf einer bestimmten Hierarchieebene listet die Konfigurationsgruppen auf, die der Liste der Konfigurationsgruppen der enthaltenden Anweisung hinzugefügt werden sollen.
Werte, die auf der jeweiligen Hierarchieebene angegeben werden, überschreiben Werte, die von der Konfigurationsgruppe geerbt wurden.
Gruppen, die in geschachtelten Anweisungen aufgeführt sind apply-groups , haben Vorrang vor Gruppen in äußeren Anweisungen. Im folgenden Beispiel erbt der BGP-Nachbar 10.0.0.1 zuerst die Konfigurationsdaten von group one . Es erbt dann Konfigurationsdaten von group two und group three. Konfigurationsdaten in der Gruppe one überschreiben Daten in jeder anderen Gruppe. Daten aus group ten werden nur verwendet, wenn eine Anweisung in keiner anderen Gruppe enthalten ist.
apply-groups [ eight nine ten ];
protocols {
apply-groups seven;
bgp {
apply-groups [ five six ];
group some-bgp-group {
apply-groups four;
neighbor 10.0.0.1 {
apply-groups [ one two three ];
}
}
}
}
Die Stammebene ist das logische Standardsystem. Wenn Sie eine Gruppe konfigurieren, die für die Stammebene definiert ist, können Sie diese Gruppe nicht erfolgreich auf ein nicht standardmäßiges logisches System unter der [edit logical-systems logical-system-name] Hierarchieebene anwenden. Obwohl das Gerät den Commit akzeptiert, wenn Sie die Gruppe anwenden, wird die Konfigurationsgruppe für das nicht standardmäßige logische System nicht wirksam. Stattdessen können Sie eine zusätzliche Konfigurationsgruppe auf der Stammebene erstellen und innerhalb des logischen Systems anwenden. Alternativ können Sie die ursprüngliche Gruppe so ändern, dass sie die Konfiguration sowohl für die standardmäßige als auch für die nicht standardmäßige Hierarchieebene des logischen Systems enthält.
Beispiel: Erstellen und Anwenden von Konfigurationsgruppen
Dieses Beispiel veranschaulicht das Erstellen und Anwenden von Konfigurationsgruppen. In diesem Beispiel wird die SNMP-Konfiguration zwischen der Gruppen basic - und der normalen Konfigurationshierarchie aufgeteilt.
Sie erzielen mehrere Vorteile, wenn Sie die systemspezifische Konfiguration (SNMP-Kontakt) in einer Konfigurationsgruppe platzieren und damit von der normalen Konfigurationshierarchie trennen:
-
Sie können einen der beiden Abschnitte ersetzen, ohne Daten aus dem anderen zu verwerfen, indem Sie den
load replaceBefehl verwenden. -
Sie können einen Kontakt für ein bestimmtes Feld festlegen, da die Gruppendaten durch die gerätespezifischen Daten ausgeblendet werden.
[edit] groups { basic { # User-defined group name snmp { # This group contains some SNMP data contact "My Engineering Group"; community BasicAccess { authorization read-only; } } } } apply-groups basic; # Enable inheritance from group "basic" snmp { # Some normal (non-group) configuration location "West of Nowhere"; }
Diese Konfiguration entspricht der folgenden:
[edit]
snmp {
location "West of Nowhere";
contact "My Engineering Group";
community BasicAccess {
authorization read-only;
}
}
Beispiel: Deaktivieren der Vererbung einer Konfigurationsgruppe
Sie können die Vererbung einer Konfigurationsgruppe auf jeder Ebene außer der obersten Ebene der Hierarchie deaktivieren. Um die Vererbung zu deaktivieren, schließen Sie die apply-groups-except Anweisung in die Konfiguration ein:
apply-groups-except [ group-names ];
Diese Anweisung ist nützlich, wenn Sie die apply-group Anweisung auf einer bestimmten Hierarchieebene verwenden, aber auch die von der Konfigurationsgruppe geerbten Werte für einen bestimmten Parameter überschreiben möchten.
Beispiel: Deaktivieren Sie die Vererbung auf der Schnittstelle so-1/1/0
Im folgenden Beispiel wird die apply-groups Anweisung global auf Schnittstellenebene angewendet. Die apply-groups-except Anweisung wird auch an der Schnittstelle so-1/1/0 angewendet, sodass die Standardwerte für die hold-time and-Anweisungen link-mode verwendet werden.
[edit]
groups { # "groups" is a top-level statement
global { # User-defined group name
interfaces {
<*> {
hold-time down 640;
link-mode full-duplex;
}
}
}
}
apply-groups global;
interfaces {
so-1/1/0 {
apply-groups-except global; # Disables inheritance from group "global"
# so-1/1/0 uses default value for “hold-time”
# and "link-mode"
}
}
Konfigurationsgruppen können zu Verwirrung hinsichtlich der tatsächlich vom Gerät verwendeten Werte führen, da ein Gerät Konfigurationsdaten von Konfigurationsgruppen erben kann. Um die tatsächlichen Werte anzuzeigen, die vom Gerät verwendet werden, verwenden Sie den display inheritance Befehl nach dem senkrechten Strich ( | ) in einem show Befehl. Dieser Befehl zeigt die geerbten Anweisungen auf der Ebene an, auf der sie geerbt werden, und in der Gruppe, von der sie geerbt wurden:
[edit]
user@host# show | display inheritance
snmp {
location "West of Nowhere";
##
## 'My Engineering Group' was inherited from group 'basic'
##
contact "My Engineering Group";
##
## 'BasicAccess' was inherited from group 'basic'
##
community BasicAccess {
##
## 'read-only' was inherited from group 'basic'
##
authorization read-only;
}
}
Um die erweiterte Konfiguration (die Konfiguration, einschließlich der geerbten Anweisungen) ohne die ##-Zeilen anzuzeigen, verwenden Sie den except Befehl nach der Pipe in einem show Befehl:
[edit]
user@host# show | display inheritance | except ##
snmp {
location "West of Nowhere";
contact "My Engineering Group";
community BasicAccess {
authorization read-only;
}
}
Wenn Sie die Option verwenden, display inheritance | except ## werden alle Zeilen mit ##entfernt. Daher können Sie möglicherweise keine Informationen über Passwörter oder andere wichtige Daten anzeigen, die dort ## verwendet werden. Um die vollständigen Konfigurationsdetails mit allen Informationen anzuzeigen (ohne nur die mit ##gekennzeichneten Kommentare ), verwenden Sie die no-comments Option mit dem display inheritance Befehl:
[edit]
user@host# show | display inheritance no-comments
snmp {
location "West of Nowhere";
contact "My Engineering Group";
community BasicAccess {
authorization read-only;
}
}
Beispiel: Verwenden der junos-defaults Konfigurationsgruppe
Junos OS Stellt eine ausgeblendete und unveränderliche Konfigurationsgruppe bereit, junos-defaults die automatisch auf die Konfiguration Ihres Geräts angewendet wird. Die junos-defaults Gruppe enthält vorkonfigurierte Anweisungen, die vordefinierte Werte für allgemeine Anwendungen enthalten. Auf einige der Anweisungen muss verwiesen werden, damit sie wirksam werden, z. B. Definitionen für Anwendungen (z. B. FTP- oder Telnet-Einstellungen). Andere Anweisungen werden automatisch übernommen, z. B. Terminaleinstellungen.
Viele Bezeichner, die in der junos-defaults Konfigurationsgruppe enthalten sind, beginnen mit dem Namen junos-. Da Bezeichner, die mit dem Namen junos- beginnen, für die Verwendung durch Juniper Networks reserviert sind, können Sie keine Konfigurationsobjekte definieren, die diesen Namen verwenden.
Sie können den Namen einer Konfigurationsgruppe nicht in eine apply-groups Anweisung aufnehmenjunos-defaults.
Um den vollständigen Satz der verfügbaren voreingestellten Anweisungen aus der junos-defaults Gruppe anzuzeigen, geben Sie den show groups junos-defaults Befehl configuration mode auf der obersten Ebene der Konfiguration ab. Das folgende Beispiel zeigt eine unvollständige Liste der Junos-Standardgruppen:
user@host# show groups junos-defaults
# Make vt100 the default for the console port
system {
ports {
console type vt100;
}
}
applications {
# File Transfer Protocol
application junos-ftp {
application-protocol ftp;
protocol tcp;
destination-port 21;
}
# Trivial File Transfer Protocol
application junos-tftp {
application-protocol tftp;
protocol udp;
destination-port 69;
}
# RPC port mapper on TCP
application junos-rpc-portmap-tcp {
application-protocol rpc-portmap;
protocol tcp;
destination-port 111;
}
# RPC port mapper on UDP
}
Um auf Anweisungen zu verweisen, die in der junos-defaults Gruppe verfügbar sind, schließen Sie die ausgewählte junos- default-name Anweisung auf der entsprechenden Hierarchieebene ein.
Um die Liste der Anwendungen aus der junos-defaults Gruppe anzuzeigen, geben Sie die . show configuration groups junos-defaults applications Die Anwendungen, die mit junos- beginnen, werden standardmäßig von Juniper Networks konfiguriert. Im folgenden Beispiel wird eine unvollständige Liste der Junos-Standardgruppenanwendungen angezeigt.
user@host>show configuration groups junos-defaults applications
## protect: groups junos-defaults
##
#
# File Transfer Protocol
#
application junos-ftp {
application-protocol ftp;
protocol tcp;
destination-port 21;
}
#
# Trivial File Transfer Protocol
#
application junos-ftp-data {
application-protocol ftp-data;
protocol tcp;
destination-port 20;
}
application junos-tftp {
application-protocol tftp;
protocol udp;
destination-port 69;
}
#
# Two-Way Active Measurement Protocol
#
application junos-twamp {
application-protocol twamp;
protocol tcp;
destination-port 862;
}
#
# Real Time Streaming Protocol
#
application junos-rtsp {
application-protocol rtsp;
protocol tcp;
destination-port 554;
}
#
# Network Basic Input Output System - networking protocol used on
# Windows networks session service port
#
application junos-netbios-session {
protocol tcp;
destination-port 139;
}
application junos-smb-session {
protocol tcp;
destination-port 445;
}
application junos-ssh {
protocol tcp;
destination-port 22;
}
application junos-telnet {
protocol tcp;
destination-port 23;
}Beispiel: Verwenden von Platzhaltern mit Konfigurationsgruppen
Sie können Platzhalter verwenden, um Namen zu identifizieren, und zulassen, dass eine Anweisung Daten für eine Vielzahl von Anweisungen bereitstellt.
Die Verwendung von Platzhaltern in normalen Konfigurationsdaten erfolgt in einem Stil, der mit dem übereinstimmt, der mit herkömmlichen UNIX-Shell-Platzhaltern verwendet wird. In diesem Stil können Sie die folgenden Metazeichen verwenden:
-
Sternchen (
*) – Entspricht einer beliebigen Zeichenfolge. -
Fragezeichen (
?): Entspricht einem beliebigen einzelnen Zeichen. -
Offene eckige Klammer (
[) – Führt eine Zeichenklasse ein. -
Schließende eckige Klammer (
]) – Gibt das Ende einer Zeichenklasse an. Wenn die schließende Klammer fehlt, entspricht die offene Klammer einer offenen Klammer[, anstatt eine Zeichenklasse einzuführen. -
Eine Zeichenklasse stimmt mit einem der Zeichen zwischen den eckigen Klammern überein. Innerhalb einer Konfigurationsgruppe müssen Sie einen Schnittstellennamen, der eine Zeichenklasse enthält, in Anführungszeichen setzen.
-
Bindestrich (
-) – Gibt einen Zeichenbereich an. -
Ausrufezeichen (
!) – Sie können die Zeichenklasse ergänzen, indem Sie ein Ausrufezeichen zum ersten Zeichen der Zeichenklasse machen. Um eine schließende eckige Klammer (]) in eine Zeichenklasse einzufügen, machen Sie sie zum ersten aufgelisteten Zeichen (nach dem!, falls vorhanden). Wenn Sie ein Minuszeichen einfügen möchten, machen Sie es zum ersten oder letzten aufgelisteten Zeichen.
Wenn Sie einen Bezeichner innerhalb der groups Hierarchie verwenden, beginnen Sie den Bezeichnernamen mit einem anderen Wert als <. Wenn Sie jedoch eine Platzhalteranweisung definieren, können Sie because < because die Platzhalteranweisung eine schließende >.
Für die Verwendung von Platzhaltern in Konfigurationsgruppen gelten dieselben Regeln wie für die normale Konfiguration. und > haben jedoch eine besondere Bedeutung, < wenn sie unter der Hierarchie groups verwendet werden. In der Hierarchie müssen Sie jeden Begriff, der groups ein Platzhaltermuster <>patternverwendet, in spitze Klammern einschließen, um ihn von anderen Platzhaltern in der Konfigurationsdatei zu unterscheiden.
[edit]
groups {
sonet-default {
interfaces {
<so-*> {
sonet-options {
payload-scrambler;
rfc-2615;
}
}
}
}
}
Platzhalterausdrücke stimmen mit vorhandenen Anweisungen in der Konfiguration überein (und stellen Konfigurationsdaten dafür bereit), die nur mit ihrem Ausdruck übereinstimmen. Im vorherigen Beispiel übergibt der Ausdruck <so-*> seine sonet-options Anweisung an jede Schnittstelle, die mit dem Ausdruck so-*übereinstimmt.
Das folgende Beispiel zeigt, wie ein Bereich von Schnittstellen angegeben wird:
[edit]
groups {
gigabit-ethernet-interfaces {
interfaces {
"<ge-1/2/[5-8]>" {
description "These interfaces reserved for Customer ABC";
}
}
}
}
Mit spitzen Klammern können Sie normale Platzhalter ohne Änderung übergeben. Bei jedem Abgleich innerhalb der Konfiguration, unabhängig davon, ob er mit oder ohne Platzhalter erfolgt, wird das erste Element in der Konfiguration verwendet, das übereinstimmt. Im folgenden Beispiel werden Daten aus den BGP-Gruppen mit Platzhaltern in der Reihenfolge geerbt, in der die Gruppen aufgelistet sind.
- Der Präferenzwert von
<*a*>überschreibt die Präferenz in<*b*>. - Der
pWert von überschreibt den Wert von<*c*><*d*>
Datenwerte aus einer dieser Gruppen überschreiben die Datenwerte aus abcd:
[edit] user@host#showgroups { one { protocols { bgp { group <*a*> { preference 1; } group <*b*> { preference 2; } group <*c*> { out-delay 3; } group <*d*> { out-delay 4; } group abcd { preference 10; hold-time 10; out-delay 10; } } } } } protocols { bgp { group abcd { apply-groups one; } } } [edit] user@host#show | display inheritanceprotocols { bgp { group abcd { ## ## ’1’ was inherited from group ’one’ ## preference 1; ## ## ’10’ was inherited from group ’one’ ## hold-time 10; ## ## ’3’ was inherited from group ’one’ ## out-delay 3; } } }
So verbessern Sie die Commit-Zeit bei der Verwendung von Konfigurationsgruppen
Mithilfe von Konfigurationsgruppen können Sie Konfigurationen auf andere Hierarchien anwenden, ohne Konfigurationsdaten erneut eingeben zu müssen. Sie können jedes Konfigurationsdetail in einer Konfigurationsgruppe angeben. Sie können Platzhalter auch in Konfigurationsgruppen verwenden, um Datenbereiche zu konfigurieren, ohne jede Konfigurationszeile detailliert zu beschreiben. Eine weitere Möglichkeit, Konfigurationsgruppen zu verwenden, besteht darin, einen Vererbungspfad zu erstellen, der eine lange Zeichenfolge von anzuwendenden Konfigurationen enthält.
Wenn für eine Konfiguration, die Konfigurationsgruppen verwendet, ein Commit ausgeführt wird, wird der Commit-Prozess erweitert und liest alle Konfigurationsdaten der Gruppe in den Arbeitsspeicher, um die Konfigurationen wie vorgesehen anzuwenden. Die Commit-Leistung kann negativ beeinflusst werden, wenn viele Konfigurationsgruppen angewendet werden, insbesondere wenn die Konfigurationsgruppen häufig Platzhalter verwenden.
Wenn Ihr System viele Konfigurationsgruppen verwendet, die Platzhalter verwenden, können Sie die Anweisung auf Hierarchieebene konfigurieren, um die persist-groups-inheritance Leistung der [edit system commit] Commitzeit zu verbessern.
Mit dieser Option kann das System den Vererbungspfad für jede Konfigurationsgruppe in der Datenbank und nicht im Prozessspeicher erstellen. Diese Änderung kann die Leistung der Commit-Zeit verbessern. Es kann jedoch auch die Datenbankgröße erhöhen.
Beispiel: Konfigurieren von Anweisungssätzen mit Konfigurationsgruppen
Wenn Anweisungssätze in Konfigurationsgruppen vorhanden sind, werden alle Werte vererbt. Zum Beispiel:
[edit] user@host#showgroups { basic { snmp { interface so-1/1/1.0; } } } apply-groups basic; snmp { interface so-0/0/0.0; } [edit] user@host#show | display inheritancesnmp { ## ## ’so-1/1/1.0’ was inherited from group ’basic’ ## interface [ so-0/0/0.0 so-1/1/1.0 ]; }
Bei Mengen, die nicht in eckigen Klammern angezeigt werden, werden ebenfalls alle Werte vererbt. Zum Beispiel:
[edit] user@host#showgroups { worldwide { system { name-server { 10.0.0.100; 10.0.0.200; } } } } apply-groups worldwide; system { name-server { 10.0.0.1; 10.0.0.2; } } [edit] user@host#show | display inheritancesystem { name-server { ## ## ’10.0.0.100’ was inherited from group ’worldwide’ ## 10.0.0.100; ## ## ’10.0.0.200’ was inherited from group ’worldwide’ ## 10.0.0.200; 10.0.0.1; 10.0.0.2; } }
Beispiel: Konfigurieren von Schnittstellen mithilfe von Konfigurationsgruppen
Mithilfe von Konfigurationsgruppen können Sie die allgemeinen Parameter des Schnittstellenmediums von den schnittstellenspezifischen Adressierungsinformationen trennen. Im folgenden Beispiel werden Konfigurationsdaten für ATM-Schnittstellen in einer Gruppe mit dem Namen atm-options.
[edit] user@host#showgroups { atm-options { interfaces { <at-*> { atm-options { vpi 0 maximum-vcs 1024; } unit <*> { encapsulation atm-snap; point-to-point; family iso; } } } } } apply-groups atm-options; interfaces { at-0/0/0 { unit 100 { vci 0.100; family inet { address 10.0.0.100/30; } } unit 200 { vci 0.200; family inet { address 10.0.0.200/30; } } } } [edit] user@host#show | display inheritanceinterfaces { at-0/0/0 { ## ## "atm-options" was inherited from group "atm-options" ## atm-options { ## ## "1024" was inherited from group "atm-options" ## vpi 0 maximum-vcs 1024; } unit 100 { ## ## "atm-snap" was inherited from group "atm-options" ## encapsulation atm-snap; ## ## "point-to-point" was inherited from group "atm-options" ## point-to-point; vci 0.100; family inet { address 10.0.0.100/30; } ## ## "iso" was inherited from group "atm-options" ## family iso; } unit 200 { ## ## "atm-snap" was inherited from group "atm-options" ## encapsulation atm-snap; ## ## "point-to-point" was inherited from group "atm-options" ## point-to-point; vci 0.200; family inet { address 10.0.0.200/30; } ## ## "iso" was inherited from group "atm-options" ## family iso; } } } [edit] user@host#show | display inheritance | except ##interfaces { at-0/0/0 { atm-options { vpi 0 maximum-vcs 1024; } unit 100 { encapsulation atm-snap; point-to-point; vci 0.100; family inet { address 10.0.0.100/30; } family iso; } unit 200 { encapsulation atm-snap; point-to-point; vci 0.200; family inet { address 10.0.0.200/30; } family iso; } } }
Siehe auch
Beispiel: Verwenden von Konfigurationsgruppen zum Konfigurieren einer konsistenten IP-Adresse für die Verwaltungsschnittstelle
Auf Geräten mit mehreren Routing-Engines wird jede Routing-Engine mit einer separaten IP-Adresse für die Verwaltungsschnittstelle konfiguriert. Um auf die primäre Routing-Engine zugreifen zu können, müssen Sie wissen, welche Routing-Engine aktiv ist, und die entsprechende IP-Adresse verwenden.
Eine weitere Option für einen konsistenten Zugriff auf die primäre Routing-Engine ist die Konfiguration einer zusätzlichen IP-Adresse. Diese Adresse verwenden Sie dann für die Management-Schnittstelle, unabhängig davon, welche Routing-Engine aktiv ist. Diese zusätzliche IP-Adresse ist nur auf der Verwaltungsschnittstelle für die primäre Routing-Engine aktiv. Während des Switchovers wird die Adresse in die neue primäre Routing-Engine verschoben.
In diesem Beispiel wird die Adresse 10.17.40.131 für beide Routing-Engines konfiguriert und eine Anweisung enthalten master-only . Bei dieser Konfiguration ist die 10.17.40.131 Adresse nur in der primären Routing-Engine aktiv. Die Adresse bleibt konsistent, unabhängig davon, welche Routing-Engine aktiv ist. Die Adresse 10.17.40.132 ist on re0zugewiesen fxp0und 10.17.40.133 wird on re1zugewiesen.fxp0
[edit groups re0 interfaces fxp0]
unit 0 {
family inet {
address 10.17.40.131/25 {
master-only;
}
address 10.17.40.132/25;
}
}
[edit groups re1 interfaces fxp0]
unit 0 {
family inet {
address 10.17.40.131/25 {
master-only;
}
address 10.17.40.133/25;
}
}
Diese Funktion ist auf allen Routern verfügbar, die über zwei Routing-Engines verfügen. Bei einer Routing-Matrix, die aus dem TX-Matrix-Router besteht, gilt diese Funktion nur für das Switch-Card-Chassis (SCC). Ebenso gilt diese Funktion bei einer Routing-Matrix, die aus einem TX Matrix Plus-Router besteht, nur für das Switch-Fabric-Chassis (SFC).
-
Sie müssen eindeutige IP-Adressen für zwei Schnittstellen zuweisen, die doppelte Adressen auf privaten und öffentlichen Schnittstellen aufweisen. Wenn GRES (Graceful Routing Engine Switchover) aktiviert ist, zeigt die CLI eine entsprechende Commit-Fehlermeldung an, wenn identische Adressen gefunden werden. Dieser Fehler kann auftreten, wenn Sie dieselbe IP-Adresse für eine Verwaltungsschnittstelle oder eine interne Schnittstelle (z. B
fxp0. und eine externe physische Schnittstelle wiege-0/0/1. -
Die
em0Management-Ethernet-Schnittstelle wird für den TX Matrix Plus-Router, T1600-Router in einer Routing-Matrix und Paketübertragungsrouter der PTX-Serie verwendet. Junos OS Erstellt automatisch die Management-Ethernet-Schnittstelle des Geräts.em0
Beispiel: Verwenden von Konfigurationsgruppen zum Konfigurieren von Peer-Entitäten
In diesem Beispiel wird eine Gruppe some-isp erstellt, die Konfigurationsdaten enthält, die sich auf einen anderen ISP beziehen. Anschließend werden Anweisungen an verschiedenen Stellen eingefügt apply-group , damit diese Positionen in der Konfigurationshierarchie diese Daten erben können.
[edit] user@host#showgroups { some-isp { interfaces { <xe-*> { gigether-options { flow-control; } } } protocols { bgp { group <*> { neighbor <*> { remove-private; } } } pim { interface <*> { version 1; } } } } } interfaces { xe-0/0/0 { apply-groups some-isp; unit 0 { family inet { address 10.0.0.1/24; } } } } protocols { bgp { group main { neighbor 10.254.0.1 { apply-groups some-isp; } } } pim { interface xe-0/0/0.0 { apply-groups some-isp; } } } [edit] user@host#show | display inheritanceinterfaces { xe-0/0/0 { ## ## "gigether-options" was inherited from group "some-isp" ## gigether-options { ## ## "flow-control" was inherited from group "some-isp" ## flow-control; } unit 0 { family inet { address 10.0.0.1/24; } } } } protocols { bgp { group main { neighbor 10.254.0.1 { ## ## "remove-private" was inherited from group "some-isp" ## remove-private; } } } pim { interface xe-0/0/0.0 { ## ## "1" was inherited from group "some-isp" ## version 1; } } }
Beispiel: Verwenden von Konfigurationsgruppen zum Einrichten regionaler Konfigurationen
In diesem Beispiel wird eine Gruppe mit Konfigurationsdaten aufgefüllt, die im gesamten Unternehmen Standard sind, während eine andere Gruppe regionale Abweichungen von diesem Standard enthält:
[edit] user@host#showgroups { standard { interfaces { <t3-*> { t3-options { compatibility-mode larscom subrate 10; idle-cycle-flag ones; } } } } northwest { interfaces { <t3-*> { t3-options { long-buildout; compatibility-mode kentrox; } } } } } apply-groups standard; interfaces { t3-0/0/0 { apply-groups northwest; } } [edit] user@host#show | display inheritanceinterfaces { t3-0/0/0 { ## ## "t3-options" was inherited from group "northwest" ## t3-options { ## ## "long-buildout" was inherited from group "northwest" ## long-buildout; ## ## "kentrox" was inherited from group "northwest" ## compatibility-mode kentrox; ## ## "ones" was inherited from group "standard" ## idle-cycle-flag ones; } } }
Beispiel: Konfigurieren von Platzhalterkonfigurationsgruppennamen
Platzhalter sind Konfigurationsgruppennamen, die Sonderzeichen verwenden, um ein Muster zu erstellen, das Sie auf mehrere Anweisungen anwenden können. Platzhalter sind nützlich, um einen Satz von Konfigurationsoptionen in viele verschiedene Konfigurationsgruppen zu kopieren. Sie müssen Ihren Platzhalternamen ordnungsgemäß einrichten, um sicherzustellen, dass die Platzhalterkonfigurationsoptionen in die entsprechenden Konfigurationsgruppen kopiert werden.
In diesem Beispiel werden unterschiedliche Werte für die <*-major> Platzhaltergruppen und <*-minor> unter der label-switched-path Anweisung konfiguriert. Das Sternchen (*) stellt einen Abschnitt des Platzhalternamens dar, der mit einer beliebigen Zeichenfolge übereinstimmen kann. Beispielsweise werden die Konfigurationsoptionen unter label-switched-path <*-major>label-switched-path metro-major an und jede andere label-switched-path Konfigurationsgruppe weitergegeben, die in ihrem Namen enthalten ist -major .
[edit] user@host#showgroups { mpls-conf { protocols { mpls { label-switched-path <*-major> { retry-timer 5; bandwidth 155m; optimize-timer 60; } label-switched-path <*-minor> { retry-timer 15; bandwidth 64k; optimize-timer 120; } } } } } apply-groups mpls-conf; protocols { mpls { label-switched-path metro-major { to 10.0.0.10; } label-switched-path remote-minor { to 10.0.0.20; } } } [edit] user@host#show | display inheritanceprotocols { mpls { label-switched-path metro-major { to 10.0.0.10; ## ## "5" was inherited from group "mpls-conf" ## retry-timer 5; ## "155m" was inherited from group "mpls-conf" ## bandwidth 155m; ## ## "60" was inherited from group "mpls-conf" ## optimize-timer 60; } label-switched-path remote-minor { to 10.0.0.20; ## ## "15" was inherited from group "mpls-conf" ## retry-timer 15; ## ## "64k" was inherited from group "mpls-conf" ## bandwidth 64k; ## ## "120" was inherited from group "mpls-conf" ## optimize-timer 120; } } }
Beispiel: Verweisen Sie auf die Preset-Anweisung aus der Gruppe "Defaults"
Das folgende Beispiel ist eine voreingestellte Anweisung aus der Gruppe defaults, die für FTP in einer zustandsbehafteten Firewall verfügbar ist:
[edit]
groups {
junos-defaults {
applications {
application junos-ftp {# Use FTP default configuration
application-protocol ftp;
protocol tcp;
destination-port 21;
}
}
}
Wenn Sie auf eine voreingestellte default-Anweisung aus der Gruppe defaults verweisen möchten, schließen Sie die junos-default-name Anweisung auf der entsprechenden Hierarchieebene ein. Wenn Sie z. B. auf die Standardanweisung für FTP in einer zustandsbehafteten Firewall verweisen möchten, fügen Sie die junos-ftp Anweisung auf Hierarchieebene [edit services stateful-firewall rule my-rule term my-term from applications] ein:
[edit]
services {
stateful-firewall {
rule my-rule {
term my-term {
from {
applications junos-ftp; #Reference predefined statement, junos-ftp
}
}
}
}
}
Beispiel: Anzeigen von Standardanweisungen, die auf die Konfiguration angewendet wurden
Um die Standardeinstellungen anzuzeigen, die auf die Gerätekonfiguration angewendet wurden, geben Sie den show | display inheritance defaults Befehl aus. In diesem Beispiel werden die geerbten Standardwerte auf Hierarchieebene [edit system ports] angezeigt:
user@host# show system ports | display inheritance defaults
## ## 'console' was inherited from group 'junos-defaults'
## 'vt100' was inherited from group 'junos-defaults'
## console type vt100;
Wenn Sie keine vorhandenen Standardanweisungen verwenden möchten, können Sie manuell eigene Konfigurationsgruppen erstellen.
Um die vollständigen Konfigurationsinformationen anzuzeigen und alle mit ##gekennzeichneten Kommentare wegzulassen, verwenden Sie die no-comments Option mit dem display inheritance Befehl.
Einrichten von Routing-Engine-Konfigurationsgruppen
Bei einem Gerät mit zwei Routing-Engines sollten sich beide Routing-Engines eine Konfiguration teilen. Durch diese Konfiguration wird sichergestellt, dass beide Routing-Engine-Konfigurationen identisch sind. Erstellen Sie innerhalb dieser Konfiguration zwei Routing-Engine-Gruppen, eine für jede Routing-Engine. Innerhalb dieser Gruppen geben Sie die Routing-Engine-spezifischen Parameter an.
Weitere Informationen zur Erstkonfiguration für redundante Routing-Engine-Systeme und die Gruppe re0 finden Sie im Junos OS High Availability User Guide.
So richten Sie eine Routing-Engine-Konfigurationsgruppe ein:
Verwenden von Bedingungen zum Anwenden von Konfigurationsgruppen
Sie können die when Anweisung auf Hierarchieebene [edit groups group-name] verwenden, um Bedingungen zu definieren, unter denen eine Konfigurationsgruppe angewendet werden soll.
Sie können eine Gruppe konfigurieren, die auf der Grundlage des Chassis-Typs, des Modells oder der Routing-Engine, des virtuellen Chassis-Mitglieds , des Cluster-Knotens sowie der Start- und optionalen Endzeit des Tages oder des Datums angewendet wird.
Sie können die when Anweisung z. B. verwenden, um eine generische Konfigurationsgruppe für jeden Knotentyp zu erstellen und dann die Konfiguration basierend auf bestimmten Knoteneigenschaften anzuwenden, z. B. Chassis oder Modell.
Beispiel: Konfigurieren von Bedingungen für das Anwenden von Konfigurationsgruppen
In diesem Beispiel wird gezeigt, wie Bedingungen konfiguriert werden, unter denen eine angegebene Konfigurationsgruppe angewendet werden soll.
Anforderungen
Über die Geräteinitialisierung hinaus ist keine spezielle Konfiguration erforderlich, bevor Sie dieses Beispiel konfigurieren.
Überblick
Sie können Ihre Gruppenkonfigurationsdaten auf Hierarchieebene [edit groups group-name] konfigurieren. Anschließend können Sie die when Anweisung verwenden, um die Gruppenkonfiguration basierend auf Bedingungen wie diesen anzuwenden: Typ des Chassis, Modell, Routing-Engine, virtuelles Chassis-Mitglied, Clusterknoten sowie Start- und optionale Endzeit des Tages oder Datums.
Wenn Sie mehrere Bedingungen in einer einzelnen Konfigurationsgruppe angeben, müssen alle Bedingungen erfüllt sein, bevor die Konfigurationsgruppe angewendet wird.
Sie können die Startzeit oder die Zeitdauer für die anzuwendende Konfigurationsgruppe angeben. Wenn nur die Startzeit angegeben ist, wird die Konfigurationsgruppe zum angegebenen Zeitpunkt angewendet und bleibt so lange wirksam, bis die Uhrzeit geändert wird. Wenn die Endzeit angegeben ist, wird die angewendete Konfigurationsgruppe an jedem Tag zu den angegebenen Zeiten gestartet und beendet.
In diesem Beispiel werden Bedingungen in einer Konfigurationsgruppe festgelegt, sodass diese Gruppe nur angewendet wird, test1wenn alle der folgenden Bedingungen erfüllt sind: Der Router ist ein MX240-Router mit dem Gehäusetyp LCC0 mit einer Routing-Engine, die als RE0 arbeitet, ist Mitglied0 des virtuellen Chassis auf Knoten0, und die Konfigurationsgruppe ist nur von 9:00 bis 17:00 Uhr jeden Tag in Kraft.
Konfiguration
CLI-Schnellkonfiguration
Um dieses Beispiel schnell zu konfigurieren, kopieren Sie die folgenden Befehle, fügen Sie sie in eine Textdatei ein, entfernen Sie alle Zeilenumbrüche, ändern Sie alle Details, die für Ihre Netzwerkkonfiguration erforderlich sind, und kopieren Sie dann die Befehle und fügen Sie sie in die CLI auf Hierarchieebene [edit] ein.
set groups test1 when model mx240set groups test1 when chassis lcc0set groups test1 when routing-engine re0set groups test1 when member member0set groups test1 when node node0set groups test1 when time 9 to 5
Verfahren
Schritt-für-Schritt-Anleitung
So konfigurieren Sie Bedingungen für die Konfigurationsgruppe test1:
Legen Sie die Bedingung fest, die das Modell MX240-Router identifiziert.
[edit groups test1 when] user@host#
set model mx240Legen Sie die Bedingung, die den Gehäusetyp identifiziert, auf LCC0 fest.
[edit groups test1 when] user@host#
set chassis lcc0Legen Sie die Bedingung fest, die die Routing-Engine identifiziert, die als
RE0.[edit groups test1 when] user@host#
set routing-engine re0Legen Sie die Bedingung fest, die das virtuelle Chassis
member0identifiziert.[edit groups test1 when] user@host#
set member member0Legen Sie die Bedingung fest, die den Cluster
node0identifiziert.[edit groups test1 when] user@host#
set node node0Legen Sie die Bedingung fest, die die Gruppe nur zwischen 9:00 und 17:00 Uhr täglich anwendet.
[edit groups test1 when] user@host#
set time 9 to 5HINWEIS:Die Syntax zum Angeben der Uhrzeit lautet:
time <start-time> [to <end-time>]Verwenden Sie das Zeitformat JJJJ-MM-TT.HH:MM, HH:MM oder HH.Bestätigen Sie die Konfiguration.
user@host#
commit
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie den show groups test1 Befehl eingeben. Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
user@host# show groups test1
when {
time 9 to 5;
chassis lcc0;
model mx240;
routing-engine re0;
member member0;
node node0;
}
Verifizierung
Überprüfen der Gruppenvererbung mit bedingten Daten
Zweck
Stellen Sie sicher, dass bedingte Daten aus einer Konfigurationsgruppe geerbt werden, wenn sie angewendet werden.
Action!
Geben Sie den show | display inheritance Betriebsbefehl mit den when Daten aus, um die bedingte Vererbung anzuzeigen. In diesem Beispiel können Sie einen der folgenden Befehle ausführen, um zu bestimmen, dass die bedingten Daten geerbt wurden:
user@host>show | display inheritance when model mx240user@host>show | display inheritance when chassis lcc0user@host>show | display inheritance when routing-engine re0user@host>show | display inheritance when member member0user@host>show | display inheritance when node node0user@host>show | display inheritance when time 9 to 5