AUF DIESER SEITE
Verwenden von Junos PyEZ zum Konfigurieren von Junos-Geräten
ZUSAMMENFASSUNG Sie können das Dienstprogramm Junos PyEZ Config
oder Junos PyEZ Tables and Views verwenden, um Junos-Geräte zu konfigurieren.
Mit Junos PyEZ können Sie strukturierte und unstrukturierte Konfigurationsänderungen auf Junos-Geräten vornehmen. Das Benutzerkonto, das zum Vornehmen von Konfigurationsänderungen verwendet wird, muss über Berechtigungen zum Ändern der relevanten Teile der Konfiguration auf jedem Gerät verfügen. Wenn Sie keinen Benutzer definieren, wird standardmäßig die Standardeinstellung .$USER
In den folgenden Abschnitten werden strukturierte und unstrukturierte Konfigurationsänderungen verglichen und Details zum Junos PyEZ-Konfigurationsprozess bereitgestellt, wenn unstrukturierte Konfigurationsänderungen mithilfe des Dienstprogramms oder strukturierte Konfigurationsänderungen mithilfe von Config
Tabellen und Ansichten vorgenommen werden.
Grundlegendes zu strukturierten und unstrukturierten Konfigurationsänderungen
Unstrukturierte Konfigurationsänderungen, die aus dem Laden statischer oder vorlagenbasierter Konfigurationsdaten bestehen, die als ASCII-Text, Junos XML-Elemente, Junos OS-Befehle set
oder JavaScript Object Notation (JSON) formatiert sind, werden mit dem jnpr.junos.utils.config.Config
Dienstprogramm durchgeführt. Im Gegensatz dazu werden bei strukturierten Konfigurationsänderungen Junos PyEZ-Konfigurationstabellen und -ansichten verwendet, um bestimmte Ressourcen zu definieren, um z. B. ein Junos OS-Benutzerkonto zu konfigurieren. Wenn Sie die Tabelle zum Junos PyEZ-Framework hinzufügen, erstellt Junos PyEZ dynamisch eine Konfigurationsklasse für die Ressource, mit der Sie diese Ressource programmgesteuert auf einem Gerät konfigurieren können.
Wenn Sie das Config
Dienstprogramm verwenden, um unstrukturierte Konfigurationsänderungen auf Junos-Geräten vorzunehmen, können Sie jeden Teil der Konfiguration ändern, aber Sie müssen eines der akzeptierten Formate für die Konfigurationsdaten sowie die richtige Syntax für dieses Format verwenden. Benutzer, die mit den unterstützten Konfigurationsformaten vertraut sind und die Möglichkeit haben möchten, einen beliebigen Teil der Konfiguration zu ändern, bevorzugen möglicherweise diese Methode für Konfigurationsänderungen. Das Config
Dienstprogramm ermöglicht Ihnen auch das Zurücksetzen auf eine zuvor festgeschriebene Konfiguration oder das Laden der vorhandenen Rettungskonfiguration.
Strukturierte Konfigurationsänderungen hingegen erfordern, dass Sie Tabellen und Ansichten erstellen, um bestimmte Ressourcen zu definieren, und ermöglichen Ihnen nur, die definierten Ressourcen auf dem Gerät zu konfigurieren. Wenn Sie eine strukturierte Ressource definieren, können Sie angeben, welche Konfigurationsanweisungen ein Benutzer für die Ressource konfigurieren kann, und Sie können auch Typ- und Einschränkungsprüfungen definieren, um sicherzustellen, dass die Benutzer akzeptable Werte für die Daten in ihrer Junos PyEZ-Anwendung angeben. Sobald eine Tabelle und eine Ansicht erstellt wurden, können sie einfach freigegeben und wiederverwendet werden. Ein Tabellenbenutzer kann die Ressource auf einem Gerät programmgesteuert konfigurieren, und der Benutzer benötigt keine Kenntnisse der unterstützten Konfigurationsformate oder deren Syntax.
Tabelle 1 fasst die beiden Methoden zusammen, die Junos PyEZ zum Vornehmen von Konfigurationsänderungen unterstützt.
Art der Konfigurationsänderung |
Dienstprogramm |
Umfang |
Konfigurationsdatenformat |
Zusätzliche Informationen |
---|---|---|---|---|
Strukturierte |
Tabellen und Ansichten |
Beschränkt auf die Konfigurationsanweisungen, die in der Tabelle und Ansicht definiert sind |
– |
Wird verwendet, um gezielte Konfigurationsänderungen vorzunehmen Keine Kenntnisse von Konfigurationsformaten oder deren Syntax erforderlich |
Unstrukturierte |
|
Beliebiger Teil der Konfiguration |
|
Unterstützt:
|
In diesem Thema werden der allgemeine Konfigurationsprozess sowie die Vorgänge und Elemente erläutert, die beiden Konfigurationsmethoden gemeinsam sind. Ausführliche Informationen zum Ausführen von Konfigurationsaktualisierungen mit dem Config
Dienstprogramm oder mit Tabellen und Ansichten finden Sie in der Dokumentation zu dieser Konfigurationsmethode.
Weitere Informationen zur Verwendung des Dienstprogramms Config
zum Vornehmen unstrukturierter Konfigurationsänderungen finden Sie in den folgenden Themen:
Verwenden des Junos PyEZ Config-Dienstprogramms zum Konfigurieren von Junos-Geräten
Beispiel: Verwenden von Junos PyEZ zum Laden von Konfigurationsdaten aus einer Datei
Weitere Informationen zur Verwendung von Konfigurationstabellen und -ansichten zum Vornehmen strukturierter Konfigurationsänderungen finden Sie in den folgenden Themen:
Grundlegendes zum allgemeinen Konfigurationsprozess
Mit Junos PyEZ können Sie Konfigurationsänderungen auf Junos-Geräten vornehmen. Nachdem Sie erfolgreich eine Verbindung mit dem Gerät hergestellt haben, erstellen Sie je nach bevorzugter Konfigurationsmethode ein Config
oder Tabellenobjekt und ordnen es dem Device
Objekt zu. Zum Beispiel:
Config-Objekt
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='dc1a.example.com') as dev: cu = Config(dev)
Tabellenobjekt
from jnpr.junos import Device from myTables.ConfigTables import ServicesConfigTable with Device(host='dc1a.example.com') as dev: sct = ServicesConfigTable(dev)
Standardmäßig aktualisiert Junos PyEZ die globale Kandidatenkonfiguration (auch als freigegebene Konfigurationsdatenbank bezeichnet). Der grundlegende Prozess zum Vornehmen von Konfigurationsänderungen besteht darin, die Konfigurationsdatenbank zu sperren, die Konfigurationsänderungen zu laden, die Konfiguration zu bestätigen, um sie zu aktivieren, und dann die Konfigurationsdatenbank zu entsperren. Wenn Sie das Dienstprogramm Junos PyEZ Config
verwenden, um unstrukturierte Konfigurationsänderungen in der gemeinsam genutzten Konfigurationsdatenbank vorzunehmen, können Sie die folgenden Aktionen ausführen, indem Sie die entsprechenden Instanzmethoden aufrufen, die hier beschrieben werden:
-
Sperren Sie die Konfiguration mit
lock()
-
Ändern Sie die Konfiguration, indem Sie eine der folgenden Aktionen ausführen:
-
Rufen Sie
load()
auf, wenn eine neue vollständige Konfiguration geladen oder bestimmte Teile der Konfiguration geändert werden -
Rufen Sie
rollback()
auf, um eine zuvor festgeschriebene Konfiguration wiederherzustellen, wie unter Zurücksetzen der Konfiguration beschrieben -
Aufruf
rescue()
zum Laden der Rescue-Konfiguration, wie unter Laden der Rescue-Konfiguration beschrieben
-
-
Bestätigen Sie die Konfiguration mit
commit()
, wie unter Bestätigen der Konfiguration und Verwenden von Junos PyEZ zum Festschreiben der Konfiguration beschrieben -
Entsperren Sie die Konfiguration mit
unlock()
Wenn Sie Tabellen und Ansichten verwenden, um strukturierte Konfigurationsänderungen auf einem Gerät vorzunehmen, können Sie wählen, ob Sie die lock()
Methoden , load()
, commit()
und einzeln unlock()
aufrufen möchten, oder Sie können die Methode aufrufen, die set()
alle diese Methoden automatisch aufruft.
Die load()
Methode führt die gleiche Funktion für Table-Objekte und Config
-Objekte aus, Sie geben jedoch unterschiedliche Parameter an, je nachdem, welcher Objekttyp die Methode aufruft.
So legen Sie den Konfigurationsmodus fest
Standardmäßig aktualisiert Junos PyEZ die globale Kandidatenkonfiguration. Sie können auch einen anderen Konfigurationsmodus angeben, der beim Ändern der Konfigurationsdatenbank verwendet werden soll. Wenn Sie einen anderen Modus als den Standardmodus angeben möchten, müssen Sie das Config
or Table-Objekt mithilfe eines Kontext-Managers (with ... as
Syntax) erstellen und das Argument mode
auf den gewünschten Modus festlegen. Zu den unterstützten Modi gehören private
, exclusive
, dynamic
, batch
und ephemeral
.
Wenn Sie einen anderen Modus als den Standardmodus angeben, behandelt der Kontext-Manager das Öffnen und Sperren sowie Schließen und Entsperren der Datenbank. Dadurch wird sichergestellt, dass Sie die Datenbank nicht versehentlich in einem gesperrten Zustand belassen. In diesen Fällen müssen Sie nur die load()
commit()
und-Methode aufrufen, um das Gerät zu konfigurieren.
In den folgenden Beispielen werden Konfigurationsänderungen mithilfe des configure private
Modus vorgenommen:
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='dc1a1.example.com') as dev: with Config(dev, mode='private') as cu: cu.load('set system services netconf traceoptions file test.log', format='set') cu.pdiff() cu.commit()
from jnpr.junos import Device from myTables.ConfigTables import ServicesConfigTable with Device(host='dc1a.example.com') as dev: with ServicesConfigTable(dev, mode='private') as sct: sct.ftp = True sct.ssh = True sct.telnet = True sct.append() sct.load() sct.pdiff() sct.commit()
Der Kontext-Manager behandelt das Öffnen und Sperren der Konfigurationsdatenbank im private
, exclusive
, dynamic
, batch
oder ephemeral
-Modus. Daher führt das Aufrufen der lock()
or-Methoden set()
in einem dieser Modi zu einer LockError
Ausnahme.
Mit Junos PyEZ können Sie die kurzlebige Konfigurationsdatenbank auf Geräten aktualisieren, die diese Datenbank unterstützen. Bei der kurzlebigen Datenbank handelt es sich um eine alternative Konfigurationsdatenbank, die eine schnelle programmgesteuerte Schnittstelle zum Ausführen von Konfigurationsupdates auf Junos-Geräten bereitstellt.
Die flüchtige Konfigurationsdatenbank ist eine erweiterte Funktion, die bei falscher Verwendung schwerwiegende negative Auswirkungen auf den Betrieb des Geräts haben kann. Weitere Informationen finden Sie unter Grundlegendes zur kurzlebigen Konfigurationsdatenbank.
Um die Standardinstanz der kurzlebigen Konfigurationsdatenbank zu öffnen und zu konfigurieren, schließen Sie das Argument mode='ephemeral'
ein. Zum Beispiel:
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='router1.example.com') as dev: with Config(dev, mode='ephemeral') as cu: cu.load('set protocols mpls label-switched-path to-hastings to 192.0.2.1', format='set') cu.commit()
Um eine benutzerdefinierte Instanz der kurzlebigen Konfigurationsdatenbank zu öffnen und zu konfigurieren, schließen Sie das mode='ephemeral'
Argument ein, und legen Sie das ephemeral_instance
Argument auf den Namen der Instanz fest.
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='router1.example.com') as dev: with Config(dev, mode='ephemeral', ephemeral_instance='eph1') as cu: cu.load('set protocols mpls label-switched-path to-hastings to 192.0.2.1', format='set') cu.commit()
Angeben des Ladevorgangs
In Junos PyEZ können Sie Konfigurationsänderungen mit vielen der gleichen Ladevorgänge laden, die in der Junos OS CLI unterstützt werden. Sie geben den gewünschten Ladevorgang an, indem Sie die entsprechenden Parameter in die set()
Methode einschließen oder weglassen, wenn Sie strukturierte Konfigurationsänderungen mithilfe von Tabellen und Ansichten vornehmen, oder in die load()
Methode für strukturierte oder unstrukturierte Konfigurationsänderungen. Tabelle 2 fasst die Parametereinstellungen zusammen, die für jeden Ladevorgangstyp erforderlich sind.
Da die load override
Vorgänge and load update
eine vollständige Konfiguration erfordern, dürfen die overwrite=True
Argumente and update=True
nicht verwendet werden, wenn Konfigurationsänderungen mithilfe von Tabellen vorgenommen werden, die nur bestimmte Anweisungen in der Konfiguration ändern.
Ladevorgang |
Argument |
Beschreibung |
Erste unterstützte Version von Junos PyEZ |
---|---|---|---|
|
|
Führen Sie die geladene Konfiguration mit der vorhandenen Konfiguration zusammen. |
1.0 |
|
|
Ersetzen Sie die gesamte Konfiguration durch die geladene Konfiguration. |
1.0 |
|
|
Laden Sie Konfigurationsdaten aus einer Patch-Datei. |
2.4.0 |
|
– |
Führen Sie die geladene Konfiguration mit der vorhandenen Konfiguration zusammen, ersetzen Sie jedoch Anweisungen in der vorhandenen Konfiguration durch diejenigen, die das |
1.0 |
|
|
Laden Sie eine vollständige Konfiguration und vergleichen Sie sie mit der vorhandenen Konfiguration. Jedes Konfigurationselement, das sich in der geladenen Konfiguration unterscheidet, ersetzt das entsprechende Element in der vorhandenen Konfiguration. Während des Commit-Vorgangs analysieren nur Systemprozesse, die von geänderten Konfigurationselementen betroffen sind, die neue Konfiguration. |
2.1.0 |
So erstellen Sie das Konfigurations- oder Tabellenobjekt als Eigenschaft der Geräteinstanz
Mit der Device
class-Methode bind()
können Sie verschiedene Instanzen und Methoden an die Device
Instanz anfügen. In Ihrer Junos PyEZ-Anwendung haben Sie die Möglichkeit, das Config
or Table-Objekt an die Device
Instanz zu binden. Die Funktionalität der Methoden ändert sich nicht, aber die Methodenausführung unterscheidet sich geringfügig. Zum Beispiel:
Als eigenständige Variable:
with Device(host='dc1a.example.com') as dev: cu = Config(dev) cu.lock()
Als gebundene Eigenschaft:
with Device(host='dc1a.example.com') as dev: dev.bind( cu=Config ) dev.cu.lock()