Verwenden Sie Junos PyEZ, um die Konfiguration zu bestätigen
Mit Junos PyEZ können Sie strukturierte und unstrukturierte Konfigurationsänderungen auf Junos-Geräten vornehmen. Nachdem Sie eine Verbindung mit dem Gerät hergestellt und die Konfiguration geändert haben, müssen Sie die Konfiguration festlegen, um sie aktiv zu machen. In diesem Thema wird erläutert, wie Sie die Konfiguration festlegen und welche Commit-Optionen in Junos PyEZ-Anwendungen unterstützt werden.
So bestätigen Sie die Kandidatenkonfiguration
Wenn Sie das Junos PyEZ-Dienstprogramm jnpr.junos.utils.config.Config
verwenden, um unstrukturierte Konfigurationsänderungen auf einem Gerät vorzunehmen, bestätigen Sie die Kandidatenkonfiguration, indem Sie die Config
Instanzmethode commit()
aufrufen. Zum Beispiel:
from jnpr.junos import Device from jnpr.junos.utils.config import Config from jnpr.junos.exception import ConfigLoadError, CommitError with Device(host='router1.example.com') as dev: with Config(dev, mode='exclusive') as cu: try: cu.load(path='configs/mx_config.conf', merge=True) cu.commit() except (ConfigLoadError, CommitError) as err: print (err)
Um die Syntax der Konfiguration zu überprüfen, ohne sie zu verpflichten, rufen Sie die commit_check()
Methode anstelle der commit()
Methode auf.
cu.commit_check()
Wenn Sie Junos PyEZ-Konfigurationstabellen und -Ansichten verwenden, um strukturierte Konfigurationsänderungen auf einem Gerät vorzunehmen, bestätigen Sie die Kandidatenkonfiguration, indem Sie entweder die set()
Methode aufrufen, die automatisch die lock()
Methoden und load()
commit()
unlock()
Methoden aufruft, oder indem Sie die verschiedenen Methoden einzeln aufrufen. Zum Beispiel:
from jnpr.junos import Device from myTables.UserConfigTable import UserConfigTable with Device(host='router1.example.com') as dev: userconfig = UserConfigTable(dev) # ...set the values for the configuration data... userconfig.append() userconfig.set(merge=True)
Ebenso können Sie die einzelnen Methoden aufrufen, wie im folgenden Beispiel:
from jnpr.junos import Device from myTables.UserConfigTable import UserConfigTable with Device(host='router1.example.com') as dev: userconfig = UserConfigTable(dev) # ...set the values for the configuration data... userconfig.append() userconfig.lock() userconfig.load(merge=True) userconfig.commit() userconfig.unlock()
Wenn Sie ein Kontext-Manager verwenden, um das Objekt oder das Config
Table-Objekt zu erstellen und das mode
Argument auf private
, exclusive
, dynamic
, oder ephemeral
batch
festlegen, rufen Sie nur die load()
und commit()
Methoden zur Konfiguration des Geräts auf. Der Kontext-Manager verarbeitet das Öffnen, Sperren und Schließen und Entsperren der Datenbank, sodass Aufrufe von lock()
, unlock()
oder set()
Methoden in einem dieser Modi zu einer LockError-Ausnahme führen.
So legen Sie Commit-Optionen fest
Die Junos CLI bietet Optionen für den Commit-Vorgang, z. B. das Hinzufügen eines Commit-Kommentars oder die Synchronisierung der Konfiguration auf mehreren Routing-Engines. Junos PyEZ unterstützt viele derselben Commit-Optionen und einige zusätzliche Optionen, die Sie in Ihrer Junos PyEZ-Anwendung verwenden können, indem Sie die entsprechenden Argumente in die Liste der Methodenargumente oder set()
- commit()
argumente einschreiben. Tabelle 1 zeigt die unterstützten Commit-Optionen und den entsprechenden CLI-Befehl.
Argument "Commit-Option" |
Beschreibung |
CLI-Befehl |
---|---|---|
|
Protokollieren Sie einen Kommentar für diesen Commit-Vorgang in der Systemprotokolldatei und im Commit-Verlauf des Geräts. |
|
|
Fordern Sie, dass ein Commit-Vorgang innerhalb einer bestimmten Zeit nach dem ersten Commit bestätigt wird. Andernfalls setzen Sie ein Rollback zur zuvor festgelegten Konfiguration ein. Legen Sie das Argument so fest, dass |
|
|
Geben Sie ein XML-Objekt mit detaillierten Informationen zum Commit-Prozess zurück. |
|
|
Synchronisieren und bestätigen Sie die Konfiguration auf beiden Routing-Engines, selbst wenn es offene Konfigurationssitzungen oder nicht zweckgebundene Konfigurationsänderungen auf der anderen Routing-Engine gibt. |
|
|
Ignorieren Sie Warnungen, die während des Commit-Vorgangs ausgelöst werden. Legen Sie das Argument so fest, dass |
– |
|
Synchronisierung und Commit der Konfiguration auf beiden Routing-Engines. |
|
|
Warten Sie auf den Abschluss des Vorgangs und verwenden Sie den angegebenen Wert als Timeout. |
– |
Commit-Kommentar
Wenn Sie die Konfiguration festlegen, können Sie einen kurzen Kommentar einfügen, um den Zweck der vorgenommenen Änderungen zu beschreiben. Um einen Kommentar zu protokollieren, der die Änderungen beschreibt, fügen Sie gegebenenfalls den comment
Parameter und eine Nachrichtenzeichenfolge in die Argumentliste oder set()
die Liste der commit()
Methodenargumente ein. Zum Beispiel:
cu.commit(comment='Configuring ge-0/0/0 interface')
Das Einschreiben des comment
Arguments entspricht der Ausgabe des commit comment
Konfigurationsmodusbefehls in der CLI. Der Kommentar wird in der Systemprotokolldatei protokolliert und in den Commit-Verlauf des Geräts aufgenommen, den Sie durch Ausgabe des show system commit
Befehls in der CLI anzeigen können.
Commit-Bestätigung
Wenn Sie verlangen möchten, dass ein Commit-Vorgang innerhalb einer bestimmten Zeit nach dem ersten Commit bestätigt wird, fügen Sie das confirm=minutes
Argument gegebenenfalls in die Argumentliste oder set()
die Liste der commit()
Methodenargumente ein.
cu.commit(confirm=15)
Wenn der Commit nicht innerhalb des vorgegebenen Zeitlimits bestätigt wird, setzt das Gerät automatisch einen Roll zur zuvor zugegesagten Konfiguration zurück und sendet eine Broadcast-Nachricht an alle angemeldeten Benutzer. Der zulässige Bereich beträgt 1 bis 65.535 Minuten. Sie können auch angeben, dass confirm=True
die Standard-Rollbackzeit von 10 Minuten verwendet wird. Um den Commit-Vorgang zu bestätigen, rufen Sie entweder die commit()
Oder-Methode commit_check()
auf.
Der bestätigte Commit-Vorgang ist nützlich, um zu überprüfen, ob eine Konfigurationsänderung korrekt funktioniert, und verhindert den Verwaltungszugriff auf das Gerät nicht. Wenn die Änderung den Zugriff verhindert oder andere Fehler verursacht, ermöglicht das automatische Rollback zur vorherigen Konfiguration den Zugriff auf das Gerät nach Ablauf der Rollback-Frist. Wenn Sie die Verbindung zum Gerät verlieren, müssen Sie die Junos PyEZ-Methode open()
ausstellen, um die Konnektivität wiederherzustellen.
Commit-Detail
Sie können die Details des gesamten Commit-Vorgangs überprüfen, indem Sie das detail=True
Argument in die Liste der Methodenargumente oder set()
-commit()
argumente einschreiben. Wenn Sie dieses Argument einschließen, gibt die Methode ein XML-Objekt mit detaillierten Informationen über den Commit-Prozess zurück. Der Rückgabewert entspricht dem Inhalt, der vom Element in der <commit-results>
Ausgabe des Befehls in der commit | display detail | display xml
CLI umschlossen wird.
from lxml import etree ... commit_detail = cu.commit(detail=True) print (etree.tostring(commit_detail, encoding='unicode'))
Commit-Synchronisierung
Wenn das Gerät über zwei Routing-Engines verfügt, können Sie die Konfiguration auf beiden Routing-Engines synchronisieren und festlegen, indem Sie das sync=True
Argument in die Methoden-Argumentliste oder set()
die Liste der commit()
Methodenargumente einschreiben.
cu.commit(sync=True)
Wenn Sie das sync=True
Argument einschließen, kopiert das Gerät die auf der lokalen Routing-Engine gespeicherte Kandidatenkonfiguration in die andere Routing-Engine, überprüft die syntaktische Korrektheit des Kandidaten und begeht es auf beiden Routing-Engines. Um den commit synchronize
Erfolg des Vorgangs auch dann zu erzwingen, wenn es offene Konfigurationssitzungen oder nicht zweckgebundene Konfigurationsänderungen auf der anderen Routing-Engine gibt, verwenden Sie das force_sync=True
Argument, das das Gerät veranlasst, alle Konfigurationssitzungen auf der anderen Routing-Engine zu beenden, bevor Sie die Konfiguration synchronisieren und festlegen.
cu.commit(force_sync=True)
Commit- und Commit-Check-Timeout
Die Standardzeit für ein RPC-Time out beträgt 30 Sekunden. Große Konfigurationsänderungen können diesen Wert überschreiten, was dazu führt, dass ein Commit- oder Commit-Überprüfungsvorgang ein Time out ist, bevor die Konfiguration hochgeladen, geprüft und übertragen werden kann. Um Konfigurationsänderungen zu berücksichtigen, die eine Commit-Prüfung oder Commit-Zeit erfordern, die länger als das Standard-Timeout-Intervall ist, fügen Sie das timeout=seconds
Argument in die Argumentliste oder set()
die commit_check()
commit()
Argumentliste der Methode ein, und legen Sie das Timeout-Intervall auf einen entsprechenden Wert fest. Zum Beispiel:
cu.commit_check(timeout=60) cu.commit(timeout=360)
Warnungen ignorieren
Junos PyEZ löst eine Ausnahme aus RpcError
, wenn die RPC-Antwort Elemente mit einem Warnungsschwere oder höher enthält <rpc-error>
. In Fällen, in denen es notwendig oder wünschenswert ist, die Ausnahmen, die RpcError
als Reaktion auf Warnungen ausgelöst werden, zu unterdrücken, können Sie den Parameter der commit()
ignore_warning
Methode angeben. Zum Beispiel:
cu.commit(ignore_warning=True)
Weitere Informationen zur Verwendung des Parameters finden Sie unter Unterdrücken von RpcError-Ausnahmen für Warnungen in Junos PyEZ-Anwendungen.ignore_warning