Verbinden Sie sich mit Junos-Geräten über Ansible

Erfahren Sie, wie Sie eine Verbindung zu Junos-Geräten herstellen, wenn Sie das in der juniper.device juniper.device Ansible-Sammlung festgelegte Modul verwenden.

Juniper Networks bietet Ansible-Module, mit denen Sie Geräte mit Junos OS und Geräte mit Junos OS Evolved verwalten können. Die Module von Juniper Networks werden über die juniper.device Sammlung verteilt. Die juniper.device Sammlung enthält zwei Gruppen von Modulen:

In diesem Dokument wird erläutert, wie Sie den juniper.device Modulsatz nur für die Verbindung mit Junos-Geräten über verschiedene Protokolle und Ansible-Verbindungen verwenden. Informationen zur Verwendung der junipernetworks.junos Module zum Herstellen einer Verbindung mit Junos Geräten finden Sie unter Verwenden der juniper.device.junos_* Ansible-Module zum Verwalten Junos Geräte.

Übersicht über Verbindungsmethoden

Die juniper.device Module ermöglichen Ihnen die Verbindung zu einem Junos-Gerät über SSH, Telnet oder eine serielle Konsolenverbindung. Sie müssen eine serielle Konsolenverbindung verwenden, wenn Ihr Terminal oder Laptop physisch mit dem CONSOLE-Port eines Junos-Geräts verbunden ist. Sie können SSH oder Telnet verwenden, um eine Verbindung zur Verwaltungsschnittstelle des Geräts oder zu einem Konsolenserver herzustellen, der direkt mit dem CONSOLE-Port des Geräts verbunden ist.

Neue oder auf Null gesetzte Geräte mit werkseitigen Standardkonfigurationen erfordern den Zugriff über eine Konsolenverbindung. So können Sie Ansible verwenden, um zunächst ein Gerät zu konfigurieren, das noch nicht für den Remotezugriff konfiguriert ist. Sie können entweder eine serielle Konsolenverbindung verwenden, wenn Sie direkt mit dem Gerät verbunden sind, oder Sie können Telnet oder SSH über einen Konsolenserver verwenden, der direkt mit dem Gerät verbunden ist.

Standardmäßig verwenden die juniper.device Module SSH, um eine Verbindung zu einem Gerät herzustellen. Um Telnet oder eine serielle Konsolenverbindung zu verwenden, setzen Sie den mode Parameter auf den entsprechenden Wert. Um eine Telnet-Verbindung zu einem Gerät herzustellen, setzen Sie das mode Argument auf telnet. Um eine serielle Konsolenverbindung zu verwenden, setzen Sie das mode Argument auf serial. Tabelle 1 fasst die Verbindungsmodi, ihre Standardwerte für bestimmte Parameter und alle erforderlichen Junos OS-Konfigurationen zusammen. Die juniper.device Module unterstützen alle Verbindungsmodi.

Tabelle 1: Verbindungsmodi für die juniper.device Modul-Set

Verbindungsmodus

Wert des mode Arguments

Standard-Port

Erforderliche Junos OS Konfiguration

NETCONF über SSH (Standard)

–

830

[edit system services]
netconf {
    ssh;
}

Serielle Konsolenverbindung

serial

/dev/ttyUSB0

–

SSH über einen Konsolenserver

–

22

–

Telnet zu Junos-Gerät

telnet

23

[edit system services]
telnet;

Telnet über einen Konsolenserver

telnet

23

–

Hinweis:

Bevor Sie über Telnet oder NETCONF über SSH auf die Verwaltungsschnittstelle zugreifen können, müssen Sie zunächst den entsprechenden Dienst auf Hierarchieebene [edit system services] aktivieren. Da Telnet Klartextkennwörter verwendet (wodurch eine potenzielle Sicherheitslücke entsteht), wird die Verwendung von SSH empfohlen.

Wenn Sie die juniper.device Module zur Verwaltung eines Junos-Geräts verwenden, muss das Remote-Gerät in der Lage sein, den Ansible-Benutzer mit Anmeldeinformationen zu authentifizieren, die für das jeweilige Protokoll geeignet sind. Weitere Informationen finden Sie unter Authentifizieren von Benutzern, die Ansible-Module auf Junos-Geräten ausführen.

Die juniper.device Module unterstützen verschiedene Ansible-Verbindungen bei der Verbindung mit Junos-Geräten, einschließlich lokaler (pro Aufgabe) Verbindungen und persistenter (pro Spiel) Verbindungen. Die Ansible-Verbindung bestimmt, ob Ansible für jede Aufgabe in der Wiedergabe eine separate Verbindung zum Host herstellt oder ob eine einzelne Verbindung zu einem Host hergestellt wird, die über alle Aufgaben in der Wiedergabe bestehen bleibt. Informationen zum Angeben der Ansible-Verbindung finden Sie unter Grundlegendes zu lokalen und persistenten Ansible-Verbindungen.

Lokale und persistente Ansible-Verbindungen verstehen

Die juniper.device Module benötigen kein Python auf Junos-Geräten, da die Module Junos PyEZ und die Junos XML API über NETCONF verwenden, um mit dem Gerät zu kommunizieren. Um Vorgänge auf Junos-Geräten auszuführen, müssen Sie Module daher lokal auf dem Ansible-Steuerungsknoten ausführen, auf dem Python installiert ist. Sie können die Module lokal ausführen, indem Sie sie in das Playbook Play aufnehmen connection: local . Wenn Sie connection: localverwenden, stellt Ansible für jede Aufgabe in der Wiedergabe, die Operationen auf dem Host ausführt, eine separate Verbindung zum Host her.

Die juniper.device Module unterstützen connection: juniper.device.pyez auch den Aufbau einer dauerhaften Verbindung zu einem Host. Wenn Sie eine persistente Verbindung verwenden, führt Ansible die Module weiterhin lokal auf dem Steuerungsknoten aus. Die persistente Verbindung baut jedoch eine einzige Verbindung zu jedem Host auf und hält sie aufrecht, die über die Ausführung aller Aufgaben im Spiel bestehen bleibt. Eine dauerhafte Verbindung kann für die Ausführung mehrerer Aufgaben effizienter sein als die Verwendung einer separaten Verbindung zum Host für jede Aufgabe im Spiel.

Tabelle 2 fasst die Ansible-Verbindungen für die Module im juniper.device Modul-Set zusammen.

Tabelle 2: Ansible-Verbindungen, die von der juniper.device Modul-Set

Ansible-Verbindung

Beschreibung

connection: local

Führen Sie die Module lokal auf dem Ansible-Steuerungsknoten aus, stellen Sie jedoch für jede Aufgabe in der Wiedergabe, die Operationen auf dem Host ausführt, eine separate Verbindung zu einem Host her.

connection: juniper.device.pyez

Führen Sie die Module lokal auf dem Ansible-Steuerungsknoten aus, stellen Sie jedoch eine dauerhafte Verbindung zu einem Host her, die über die Ausführung aller Aufgaben im Spiel bestehen bleibt.

Sie können Verbindungs- und Authentifizierungsparameter für lokale und dauerhafte Verbindungen im Playbook definieren. Lokale Verbindungen stellen für jede Aufgabe eine separate Verbindung zu einem Host her. So können Sie die Verbindungs- und Authentifizierungsparameter für lokale Verbindungen im Abschnitt des vars: Spiels und in der Argumentliste eines Moduls definieren. Die Modul-Argumente haben Vorrang. Im Gegensatz dazu haben persistente Verbindungen eine einzige Verbindung für alle Aufgaben im Stück. Daher müssen Sie die Verbindungs- und Authentifizierungsparameter für persistente vars: Verbindungen global im Abschnitt des Spiels definieren.

Das folgende Playbook stellt eine dauerhafte Verbindung zu jedem Host her, die für alle Aufgaben im Play verwendet wird. Die Anmeldeinformationen des Benutzers, die in einer Ansible-Tresordatei gespeichert sind, werden global im Abschnitt des vars: Spiels definiert.

Herstellen einer Verbindung mit einem Gerät über SSH

Die juniper.device Module unterstützen die Verwendung von SSH zur Verbindung mit einem Junos-Gerät. Sie können eine NETCONF-Sitzung über SSH auf der Verwaltungsschnittstelle des Geräts einrichten. Sie können auch eine SSH-Verbindung mit einem Konsolenserver herstellen, der direkt mit dem CONSOLE-Port des Geräts verbunden ist. Der SSH-Server muss in der Lage sein, den Benutzer mithilfe von Standard-SSH-Authentifizierungsmechanismen zu authentifizieren, wie unter Authentifizieren von Benutzern, die Ansible-Module auf Junos-Geräten ausführen beschrieben. Um eine NETCONF-Sitzung über SSH einzurichten, müssen Sie auch die Anforderungen erfüllen, die unter Einrichten von Ansible für Junos OS Managed Nodes beschrieben sind.

Die Module fragen automatisch die Standard-SSH-Konfigurationsdatei unter ~/.ssh/config ab, falls vorhanden. Sie können den ssh_config Parameter auch einschließen, um eine andere Konfigurationsdatei anzugeben.

Bei SSH-Verbindungen zu einem Junos-Gerät oder zu einem mit dem Gerät verbundenen Konsolenserver versuchen die Module zuerst eine auf öffentlichen SSH-Schlüsseln basierende SSH-Authentifizierung und versuchen dann eine kennwortbasierte Authentifizierung. Wenn die kennwortbasierte Authentifizierung verwendet wird, wird das angegebene Kennwort als Gerätekennwort verwendet. Wenn SSH-Schlüssel verwendet werden, ist das angegebene Passwort die Passphrase zum Entsperren des privaten Schlüssels. Sie müssen kein Kennwort angeben, wenn Sie den Schlüssel in einen SSH-Schlüsselagenten laden oder wenn der private SSH-Schlüssel eine leere Passphrase hat. Wir empfehlen jedoch nicht, private SSH-Schlüssel mit leeren Passphrasen zu verwenden.

Das folgende Playbook richtet eine NETCONF-Sitzung über SSH mit einem Junos-Gerät ein und ruft die Gerätefakten ab. Das Playbook verwendet SSH-Schlüssel, die in einen SSH-Schlüsselagenten geladen werden.

Die Module ermöglichen es Ihnen auch, eine Verbindung zu einem Junos-Gerät über eine SSH-Verbindung zu einem Konsolenserver herzustellen. In diesem Fall müssen Sie die Anmeldeinformationen sowohl für das Junos-Gerät als auch für den Konsolenserver angeben. Verwenden Sie die user Parameter und passwd , um die Anmeldeinformationen für Junos OS anzugeben. Verwenden Sie die cs_user Parameter und cs_passwd , um die Anmeldeinformationen des Konsolenservers anzugeben. Wenn SSH-Schlüssel verwendet werden, cs_passwd ist die Passphrase für den privaten Schlüssel. Legen Sie außerdem das port Argument auf den TCP-Port fest, der dem TTY-Gerät zugeordnet ist, falls zutreffend.

Im folgenden Playbook werden die Anmeldeinformationen des Benutzers für den Konsolenserver und das Junos-Gerät eingegeben. Das Modul authentifiziert sich beim Konsolenserver und dann beim Junos-Gerät. Wenn die Authentifizierung erfolgreich ist, ruft das Playbook die Gerätedaten vom verwalteten Knoten ab und druckt die Junos OS-Version.

Die Module von Juniper Networks fragen automatisch die standardmäßige SSH-Clientkonfigurationsdatei unter ~/.ssh/config ab, falls vorhanden. Sie können eine andere SSH-Konfigurationsdatei verwenden, indem Sie den ssh_config Parameter einschließen und den Speicherort der Konfigurationsdatei angeben. Zum Beispiel:

Herstellen einer Verbindung mit einem Gerät über Telnet

Die juniper.device Module ermöglichen Ihnen die Verbindung zu einem Junos-Gerät über Telnet, das einen unverschlüsselten Zugriff auf das Netzwerkgerät ermöglicht. Sie können Telnet zur Verwaltungsschnittstelle des Geräts oder zu einem Konsolenserver herstellen, der direkt mit dem CONSOLE-Port des Geräts verbunden ist. Wenn Sie über einen Konsolenserver auf das Gerät zugreifen, können Sie zunächst ein neues oder auf Null gesetztes Gerät konfigurieren, das noch nicht für den Remotezugriff konfiguriert ist. Um eine Telnet-Verbindung zur Verwaltungsschnittstelle herzustellen, müssen Sie den Telnet-Dienst auf allen Geräten, die Zugriff auf die Schnittstelle benötigen, auf der [edit system services] Hierarchieebene konfigurieren.

Um eine Telnet-Verbindung zum Remote-Gerät herzustellen, legen Sie den mode Parameter auf telnet fest und fügen Sie optional den port Parameter ein, um einen Port anzugeben. Wenn Sie mode den Parameter festlegen, telnet aber weglassen port , ist der Standardwert für port 23. Definieren Sie mode für persistente Verbindungen und port unter dem vars: Abschnitt. Bei lokalen Verbindungen können Sie die Parameter entweder unter dem vars: Abschnitt oder als Modul-Argumente definieren.

Das folgende Playbook telnet über Port 7016 zu einem Junos-Gerät, ruft die Gerätefakten ab und speichert sie in einer Datei. Das Playbook fordert Sie zur Eingabe des Benutzernamens und des Kennworts auf.

Verbinden mit einem Gerät über eine serielle Konsolenverbindung

Die juniper.device Module ermöglichen es Ihnen, eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung herzustellen, was nützlich ist, wenn Sie zunächst ein neues Gerät konfigurieren müssen, das noch nicht für den Remote-Zugriff konfiguriert ist. Um diese Verbindungsmethode verwenden zu können, muss Ihr Terminal oder Laptop physisch über den KONSOLEN-Port mit dem Junos-Gerät verbunden sein. Detaillierte Anweisungen zum Herstellen einer Verbindung mit dem CONSOLE-Port auf einem Junos-Gerät finden Sie in der Hardwaredokumentation für Ihr spezifisches Gerät.

Um eine Verbindung zu einem Junos-Gerät über eine serielle Konsolenverbindung herzustellen, setzen Sie den mode Parameter des Moduls auf serialund fügen Sie optional den port Parameter ein, um einen Port anzugeben. Wenn Sie mode den Parameter festlegen, serial aber weglassenport, ist /dev/ttyUSB0der Standardwert für port . Definieren Sie mode für persistente Verbindungen und port unter dem vars: Abschnitt. Bei lokalen Verbindungen können Sie die Parameter entweder unter dem vars: Abschnitt oder als Modul-Argumente definieren.

Das folgende Playbook stellt über den CONSOLE-Port eine Verbindung zu einem Junos-Gerät her, lädt dann eine Erstkonfiguration und führt sie als Commit aus. Das Playbook fordert Sie zur Eingabe des Benutzernamens und des Kennworts auf.