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 replace
Befehl 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
p
Wert von überschreibt den Wert von<*c*>
<*d*>
Datenwerte aus einer dieser Gruppen überschreiben die Datenwerte aus abcd
:
[edit] user@host#show
groups { 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 inheritance
protocols { 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#show
groups { basic { snmp { interface so-1/1/1.0; } } } apply-groups basic; snmp { interface so-0/0/0.0; } [edit] user@host#show | display inheritance
snmp { ## ## ’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#show
groups { 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 inheritance
system { 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#show
groups { 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 inheritance
interfaces { 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 re0
zugewiesen fxp0
und 10.17.40.133
wird on re1
zugewiesen.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
em0
Management-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#show
groups { 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 inheritance
interfaces { 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#show
groups { 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 inheritance
interfaces { 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#show
groups { 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 inheritance
protocols { 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, test1
wenn 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 mx240
set groups test1 when chassis lcc0
set groups test1 when routing-engine re0
set groups test1 when member member0
set groups test1 when node node0
set 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 mx240
Legen Sie die Bedingung, die den Gehäusetyp identifiziert, auf LCC0 fest.
[edit groups test1 when] user@host#
set chassis lcc0
Legen Sie die Bedingung fest, die die Routing-Engine identifiziert, die als
RE0
.[edit groups test1 when] user@host#
set routing-engine re0
Legen Sie die Bedingung fest, die das virtuelle Chassis
member0
identifiziert.[edit groups test1 when] user@host#
set member member0
Legen Sie die Bedingung fest, die den Cluster
node0
identifiziert.[edit groups test1 when] user@host#
set node node0
Legen 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 5
HINWEIS: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 mx240
user@host>show | display inheritance when chassis lcc0
user@host>show | display inheritance when routing-engine re0
user@host>show | display inheritance when member member0
user@host>show | display inheritance when node node0
user@host>show | display inheritance when time 9 to 5