Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Beispiel: Verwenden von Junos PyEZ zum Laden von Konfigurationsdaten aus einer Datei

Mit der Junos PyEZ-Bibliothek können Sie Betriebs- und Konfigurationsaufgaben auf Junos-Geräten ausführen. In diesem Beispiel wird das Dienstprogramm Junos PyEZ jnpr.junos.utils.config.Config verwendet, um Konfigurationsdaten aus einer lokalen Datei auf dem Konfigurationsverwaltungsserver auf ein Junos-Gerät zu laden.

Anforderungen

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

  • Konfigurationsverwaltungsserver mit Python 3.5 oder höher und Junos PyEZ Version 2.0 oder höher

  • Junos-Gerät mit aktiviertem NETCONF und einem mit den entsprechenden Berechtigungen konfigurierten Benutzerkonto

  • Öffentliches/privates SSH-Schlüsselpaar, das für den entsprechenden Benutzer auf dem Server und dem Junos-Gerät konfiguriert ist

Übersicht

Dieses Beispiel zeigt eine Python-Anwendung, die das Dienstprogramm Junos PyEZ Config verwendet, um ein neues Op-Skript in der Konfiguration des angegebenen Geräts zu aktivieren. Die Datei junos-config-add-op-script.conf , die sich auf dem Konfigurationsmanagement-Server befindet, enthält die relevanten Konfigurationsdaten im ASCII-Format.

Die Python-Anwendung importiert die Klasse, die Device die Verbindung mit dem Junos-Gerät verarbeitet, die Klasse, die Config verwendet wird, um unstrukturierte Konfigurationsänderungen auf dem Zielgerät vorzunehmen, und erforderliche Ausnahmen aus dem jnpr.junos.exception Modul, das Ausnahmen enthält, die bei der Verwaltung von Junos-Geräten auftreten. In diesem Beispiel wird die Config Instanz an die Device Instanz gebunden, anstatt eine eigenständige Variable für die Instanz der Config Klasse zu erstellen.

Nachdem die Device Instanz für das Zielgerät erstellt wurde, stellt die open() Methode eine Verbindung und eine NETCONF-Sitzung mit dem Gerät her. Die Config Hilfsmethoden sperren dann die Kandidatenkonfiguration, laden die Konfigurationsänderungen als Vorgang load merge in die Kandidatenkonfiguration, führen einen Commit für die Kandidatenkonfiguration aus und entsperren sie dann.

Der load() Parameter method path wird auf den Pfad der Konfigurationsdatei gesetzt. Da die Konfigurationsdateierweiterung das Format der Konfigurationsdaten angibt, wird der format Parameter in der Argumentliste weggelassen. Einstellung merge=True gibt an, dass das Gerät einen load merge Vorgang ausführen soll.

Nachdem die Konfigurationsvorgänge abgeschlossen sind, ruft die Anwendung die close() Methode auf, um die NETCONF-Sitzung und -Verbindung zu beenden. Die Anwendung enthält Code zum Behandeln von Ausnahmen, z. B LockError . für Fehler, die beim Sperren der Konfiguration auftreten, und CommitError für Fehler, die während des Commit-Vorgangs auftreten. Die Anwendung enthält auch Code zum Behandeln zusätzlicher Ausnahmen, die auftreten können.

Konfiguration

Erstellen der Konfigurationsdatendatei

Schritt-für-Schritt-Anleitung

So erstellen Sie die Konfigurationsdatendatei, die von der Junos PyEZ-Anwendung verwendet wird:

  1. Erstellen Sie eine neue Datei mit der entsprechenden Erweiterung, die auf dem Format der Konfigurationsdaten basiert, in diesem Beispiel ASCII-Text.

  2. Fügen Sie die gewünschten Konfigurationsänderungen in die Datei ein, z. B.:

Erstellen der Junos PyEZ-Anwendung

Schritt-für-Schritt-Anleitung

So erstellen Sie eine Python-Anwendung, die Junos PyEZ verwendet, um Konfigurationsänderungen auf einem Junos-Gerät vorzunehmen:

  1. Importieren Sie alle erforderlichen Module, Klassen und Objekte.

  2. Fügen Sie alle erforderlichen Variablen ein, die in diesem Beispiel den Hostnamen des verwalteten Geräts und den Pfad zu der Datei mit den Konfigurationsdaten enthalten.

  3. Erstellen Sie eine Funktionsdefinition und einen main() Funktionsaufruf, und platzieren Sie die restlichen Anweisungen in der Definition.

  4. Erstellen Sie eine Instanz der Device Klasse, und geben Sie den Hostnamen und alle Parameter an, die für diese spezifische Verbindung erforderlich sind.

    Öffnen Sie dann eine Verbindung, und stellen Sie eine NETCONF-Sitzung mit dem Gerät her.

  5. Binden Sie die Config Instanz an die Device Instanz.

  6. Sperren Sie die Konfiguration.

  7. Laden Sie die Konfigurationsänderungen, und behandeln Sie alle Fehler.

  8. Bestätigen Sie die Konfiguration.

  9. Entsperren Sie die Konfiguration.

  10. Beenden Sie die NETCONF-Sitzung, und beenden Sie die Verbindung mit dem Gerät.

Ergebnisse

Überprüfen Sie auf dem Konfigurationsverwaltungsserver die abgeschlossene Anwendung. Wenn die Anwendung nicht den gewünschten Code anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Anwendung zu korrigieren.

Ausführen der Junos PyEZ-Anwendung

Ausführen der Anwendung

  • Führen Sie die Anwendung auf dem Konfigurationsverwaltungsserver aus.

Überprüfung

Überprüfen Sie die Konfiguration

Zweck

Vergewissern Sie sich, dass die Konfiguration auf dem Junos-Gerät korrekt aktualisiert wurde.

Aktion

Melden Sie sich beim Junos-Gerät an und zeigen Sie die Konfiguration, den Commit-Verlauf und die Protokolldateien an, um die Konfiguration und den Commit zu überprüfen. Zum Beispiel:

Bedeutung

Die Konfiguration und der Inhalt der Protokolldatei geben an, dass die richtigen Konfigurationsanweisungen erfolgreich konfiguriert und auf dem Gerät festgeschrieben wurden.

Problembehandlung

Beheben von Timeout-Fehlern

Problem

Der Junos PyEZ-Code generiert eine RpcTimeoutError-Meldung oder eine TimeoutExpiredError-Meldung und kann die Gerätekonfiguration nicht aktualisieren.

Die Standardzeit für ein Timeout eines NETCONF-RPCs beträgt 30 Sekunden. Große Konfigurationsänderungen können diesen Wert überschreiten, was zu einer Zeitüberschreitung des Vorgangs führt, bevor die Konfiguration hochgeladen und festgeschrieben werden kann.

Lösung

Um Konfigurationsänderungen zu berücksichtigen, die möglicherweise eine Commitzeit erfordern, die länger als das Standardtimeoutintervall ist, legen Sie das Timeoutintervall auf einen geeigneten Wert fest, und führen Sie den Code erneut aus. Um das Intervall zu konfigurieren, legen Sie entweder die Device timeout Eigenschaft auf einen geeigneten Wert fest, oder schließen Sie das Argument timeout=seconds ein, wenn Sie die Methode aufrufen, um einen commit() Commit für die Konfigurationsdaten auf einem Gerät auszuführen. Zum Beispiel:

Beheben von Fehlern bei der Konfigurationssperre

Problem

Der Junos PyEZ-Code generiert eine LockError-Meldung, die darauf hinweist, dass die Konfiguration nicht gesperrt werden kann. Zum Beispiel:

Ein Konfigurationssperrfehler kann aus folgenden Gründen auftreten:

  • Ein anderer Benutzer hat eine exklusive Sperre für die Konfiguration.

  • Für die freigegebene Konfigurationsdatenbank wurden Änderungen vorgenommen, für die kein Commit ausgeführt wurde.

  • Der Benutzer, der den Junos PyEZ-Code ausführt, verfügt nicht über die Berechtigung zum Konfigurieren des Geräts.

Lösung

Wenn ein anderer Benutzer über eine exklusive Sperre für die Konfiguration verfügt oder die Konfiguration geändert hat, warten Sie, bis die Sperre aufgehoben oder die Änderungen festgeschrieben wurden, und führen Sie den Code erneut aus. Wenn die Ursache des Problems darin besteht, dass der Benutzer nicht über die Berechtigungen zum Konfigurieren des Geräts verfügt, führen Sie die Anwendung entweder mit einem Benutzer aus, der über die erforderlichen Berechtigungen verfügt, oder konfigurieren Sie ggf. das Junos-Gerät so, dass dem aktuellen Benutzer die erforderlichen Berechtigungen zum Vornehmen der Änderungen erteilt werden.

Beheben von Konfigurationsänderungsfehlern

Problem

Der Junos PyEZ-Code generiert eine ConfigLoadError-Meldung, die darauf hinweist, dass die Konfiguration aufgrund eines Berechtigungsproblems nicht geändert werden kann.

Diese Fehlermeldung wird möglicherweise generiert, wenn der Benutzer, der den Junos PyEZ-Code ausführt, über die Berechtigung zum Ändern der Konfiguration verfügt, aber nicht über die Berechtigung verfügt, den gewünschten Teil der Konfiguration zu ändern.

Lösung

Führen Sie die Anwendung entweder mit einem Benutzer aus, der über die erforderlichen Berechtigungen verfügt, oder konfigurieren Sie ggf. das Junos-Gerät, um dem aktuellen Benutzer die erforderlichen Berechtigungen zum Vornehmen der Änderungen zu erteilen.